VisualStudio用户使用GCC/make简介 我开发了一个C++工具,使用Visual Studio 2010,我也想在Linux系统上部署它。代码本身完全独立于平台编程,仅使用STL和标准库
现在我的问题是:我没有使用Linux的经验 然而,我尝试使用GCC编译我编写的其他一些程序,结果是大量的错误被扔到了我身上,我花了3个小时才解决——太可怕了 从这段经历中我注意到,如果我尝试将当前项目移植到GCC,我认为同样的事情也会发生,只是更糟糕 我的问题是: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环境切换的问题吗 我本来
- VisualStudio用户需要知道什么才能在Linux上成功运行他们的程序?
(我需要学习
?)make
- 您知道有哪一个好的源代码不涉及GCC/Linux编程的整体主题,而是专门涉及从VisualStudio环境切换的问题吗
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格式)CMakeLists.txt
文件,并生成您选择的构建脚本make
附言:我从未学过普通的
make
,尽管它肯定有它的用途。CMake在我身上找到了一个热心的用户。我应该推荐CMake
,这是最接近magic的。我建议找一个熟悉Linux和GCC的人作为你的导师/导师。我在windows上使用VS和gnu g++。只要使用跨平台库(如wxwidgets或qt),尽量避免使用windows中的任何函数。h如果你想让你的程序跨平台运行,或者你将不得不使用大量的#ifdef’s使你的程序跨平台运行(相信我,这是可怕的)。声称make
将你锁定到特定的操作系统是误导的,有很多。我觉得更正确的说法是,例如,使用make
不能保证可移植性,或者可能会面临可移植性问题。是的。make就像linux上的任何东西一样。当你知道自己在做什么时,这很容易