Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VisualStudio用户使用GCC/make简介 我开发了一个C++工具,使用Visual Studio 2010,我也想在Linux系统上部署它。代码本身完全独立于平台编程,仅使用STL和标准库_C++_Linux_Visual Studio_Gcc_Cross Platform - Fatal编程技术网

VisualStudio用户使用GCC/make简介 我开发了一个C++工具,使用Visual Studio 2010,我也想在Linux系统上部署它。代码本身完全独立于平台编程,仅使用STL和标准库

VisualStudio用户使用GCC/make简介 我开发了一个C++工具,使用Visual Studio 2010,我也想在Linux系统上部署它。代码本身完全独立于平台编程,仅使用STL和标准库,c++,linux,visual-studio,gcc,cross-platform,C++,Linux,Visual Studio,Gcc,Cross Platform,现在我的问题是:我没有使用Linux的经验 然而,我尝试使用GCC编译我编写的其他一些程序,结果是大量的错误被扔到了我身上,我花了3个小时才解决——太可怕了 从这段经历中我注意到,如果我尝试将当前项目移植到GCC,我认为同样的事情也会发生,只是更糟糕 我的问题是: VisualStudio用户需要知道什么才能在Linux上成功运行他们的程序? (我需要学习make?) 您知道有哪一个好的源代码不涉及GCC/Linux编程的整体主题,而是专门涉及从VisualStudio环境切换的问题吗 我本来

现在我的问题是:我没有使用Linux的经验

然而,我尝试使用GCC编译我编写的其他一些程序,结果是大量的错误被扔到了我身上,我花了3个小时才解决——太可怕了

从这段经历中我注意到,如果我尝试将当前项目移植到GCC,我认为同样的事情也会发生,只是更糟糕

我的问题是:

  • VisualStudio用户需要知道什么才能在Linux上成功运行他们的程序? (我需要学习
    make
    ?)

  • 您知道有哪一个好的源代码不涉及GCC/Linux编程的整体主题,而是专门涉及从VisualStudio环境切换的问题吗

我本来想说“man g++”,但那本手册排得很长

打字

g++ main.cpp utility.cpp 
g++将自动编译main.cpp、utility.cpp并将其链接到名为a.out的文件中 在命令行中键入
/a.out
,以运行编译后的代码

您不需要学习make,但是如果您学习了,简单的make脚本只需要4-5行代码。它很容易输入,但对于VisualStudio用户来说,它实际上是非常不同的,所以如果您将错误代码放在生成文件中,这是完全不友好的

关于学习linux,有很多东西需要学习。我甚至不能告诉你从哪里开始,但这里没有秘密。与Microsoft产品不同,在Microsoft产品中,您必须学习变通方法才能运行代码


哦,这里是g++信息:

我建议跳过
make
,这是一项非常古老的技术,在使用它时可能会面临可移植性问题。相反,学习另一个构建系统,如
CMake
SCons

我自己使用CMake,发现它非常棒。您可以编写非常简单的构建脚本(您可以在一两个小时内轻松开始),它会为您生成makefile。最大的优点是,它可以为您可能需要的几乎任何编译器或构建系统生成makefile。它可以生成标准的UNIX MaxCuffic文件、微软Visual C++项目、XCODEM项目、代码:Boots项目、甚至KDebug和Eclipse CDT4项目。 我自己没有使用过SCons,但我知道它实际上是为您构建程序并在python上运行的

开始使用Linux/Unix实际上意味着你想要的任何东西。离开VisualStudio可能意味着去Eclipse或其他IDE,这与学习新的IDE一样简单,也可能意味着直接去shell,忘记你曾经知道IDE是什么样子。我个人的建议是坚持使用IDE——Eclipse作为一个行业标准及其非常跨平台(只需获得CDT插件)

关于GCC的主题,如果您正在编写CMake脚本,您可能不会亲自调用它,因为CMake将生成生成文件。最简单的命令行参数是:

g++-o-I-l

例如:

g++helloworld.cpp-o world.out-I/usr/include-l mylib

要从shell运行可执行文件,请导航到其目录并键入:

/world.out

请注意,调用g++(即
g++helloworld.cpp
)时的默认输出是
a.out

这就是你真正需要知道的!剩下的很容易。您将学会爱上Unix,而且我真的建议您学习shell,即使您走的是IDE的道路。它可以让你的生活更轻松

编辑:要将您的程序移植到Linux和带有CMake的GCC,您需要做以下几点:

  • 得到克马克
  • 在源目录中编写
    CMakeLists.txt
    文件(它是CMake使用的Makefile格式)
  • 在目录上调用CMake。CMake将自动解析
    CMakeLists.txt
    文件,并生成您选择的构建脚本
  • 使用您使用的任何构建系统进行构建。如果您使用的是标准的Unix Makefiles,这意味着只需导航到构建目录并在shell中键入
    make
  • 你的项目将建成,你就完成了
    附言:我从未学过普通的
    make
    ,尽管它肯定有它的用途。CMake在我身上找到了一个热心的用户。

    我应该推荐
    CMake
    ,这是最接近magic的。我建议找一个熟悉Linux和GCC的人作为你的导师/导师。我在windows上使用VS和gnu g++。只要使用跨平台库(如wxwidgets或qt),尽量避免使用windows中的任何函数。h如果你想让你的程序跨平台运行,或者你将不得不使用大量的#ifdef’s使你的程序跨平台运行(相信我,这是可怕的)。声称
    make
    将你锁定到特定的操作系统是误导的,有很多。我觉得更正确的说法是,例如,使用
    make
    不能保证可移植性,或者可能会面临可移植性问题。是的。make就像linux上的任何东西一样。当你知道自己在做什么时,这很容易