我使用Visual Studio 2010开发了一个C ++工具,我也想在Linux系统上部署它。代码本身完全独立于平台编程,仅使用STL和标准库。
现在我的问题是:我没有使用Linux的经验。
然而,我已经尝试使用GCC编写了一些我编写的其他程序,结果是一大堆错误被扔给我,这花了我3个小时来解决 - 恐怖!从这次经历中我注意到,如果我尝试将当前项目移植到GCC,那么即将发生同样的事情,情况会更糟。
我的问题是:
Visual Studio用户在Linux上成功运行程序需要了解什么?
(我需要学习make
吗?)
您是否知道一个很好的来源,不是涵盖整个GCC / Linux编程的主题,而是特别是从Visual Studio环境切换的问题?
答案 0 :(得分:10)
我建议完全跳过make
,这是一项相当古老的技术,在使用它时可能会遇到可移植性问题。相反,请学习另一个构建系统,例如CMake
http://www.cmake.org/或SCons
http://www.scons.org/
我自己使用CMake并发现它非常棒。您编写非常简单的构建脚本(您可以在一两个小时内轻松开始)并为您生成makefile。最大的优点是它可以为几乎所有你想要的编译器或构建系统生成makefile。它可以生成标准的unix makefile,Microsoft Visual C ++项目,XCode项目,Code :: Blocks项目,甚至是KDevelop和Eclipse CDT4项目。
我自己没有使用SCons,但我知道它实际上是为你构建程序并在python上运行。
Linux / Unix入门真正意味着你想要的任何东西。从Visual Studio开始可能意味着要去Eclipse或其他IDE,这就像学习新IDE一样简单,或者它可能意味着直接进入shell而忘记了你曾经知道IDE的样子。我个人的建议是坚持使用IDE- Eclipse作为行业标准非常棒,而且非常跨平台(只需获得CDT插件)。
关于GCC的主题,如果你正在编写CMake脚本,你可能不会真正自己调用它,因为CMake会生成makefile。最简单的命令行参数是:
g++ <source-files> -o <output-name> -I <another include directory> -l <library to link to>
作为一个例子:
g++ helloworld.cpp -o world.out -I /usr/include -l mylib
要从shell运行可执行文件,请导航到其中的目录并键入:
./world.out
请注意,调用g ++(即g++ helloworld.cpp
)时的默认输出为a.out
。
这就是你真正需要知道的!其余的很容易。你会学会喜欢Unix,我真的建议学习shell,即使你走的是IDE的路径。它可以让你的生活更轻松。
编辑:所以要用CMake将程序移植到Linux和GCC,这就是你要做的:
CMakeLists.txt
文件写入源目录(CMake使用的Makefile格式)CMakeLists.txt
文件并生成您选择的构建脚本make
make
,尽管它确实有其用途。 CMake在我身上找到了一位热切的用户。
答案 1 :(得分:4)
我打算说“man g ++”但是这本手册很长。
只需输入
即可g++ main.cpp utility.cpp
g ++将自动编译并将main.cpp,utility.cpp链接到名为a.out的文件中
在命令行中键入./a.out
以运行已编译的代码。
你不需要学习make,但是如果你这样做,简单的make脚本只需要4-5行代码。输入相当容易,但对于视觉工作室用户来说实际上是非常不同的,所以如果你把错误的代码放在你的Makefile中,它就完全不友好了。
关于学习linux,有很多东西需要学习。我甚至不能告诉你从哪里开始,但没有秘密。与Microsoft产品不同,您必须了解解决方法以使代码运行。
哦,这里是g ++信息:http://homepages.gac.edu/~mc38/2001J/documentation/g++.html