介绍如何为Visual Studio用户使用GCC/make

Bil*_* G. 15 c++ linux gcc cross-platform visual-studio

我使用Visual Studio 2010开发了一个C++工具,我也希望在Linux系统上部署它.代码本身完全独立于平台编程,仅使用STL和标准库.

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

但是,我试图得到一些我用GCC编写的其他程序,结果是一大堆错误被扔给我,这花了我3个小时来解决 - 恐怖!

从这次经历中我注意到,如果我尝试将当前项目移植到GCC,那么即将发生同样的事情,情况会更糟.

我的问题是:

  • Visual Studio用户需要知道什么才能成功地在Linux上运行程序?(我需要学习make吗?)

  • 你知道一个很好的资源,它不是整个GCC/Linux编程的主题,而是特别是从Visual Studio环境切换的问题吗?

Pri*_*ime 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,这就是你要做的:

  1. 获取CMake
  2. CMakeLists.txt文件写入源目录(CMake使用的Makefile格式)
  3. 在目录上调用CMake.CMake将CMakeLists.txt自动解析文件并生成您选择的构建脚本
  4. 使用您使用的任何构建系统构建.如果你使用的是标准的Unix Makefile,那就意味着只需导航到build目录并输入makeshell
  5. 您的项目将建成并完成!

PS:我从来没有学过正常make,虽然它肯定有它的用途.CMake在我身上找到了一位热切的用户.

  • 声称“ make”将您锁定到特定的操作系统是一种误导,它可以大量使用。我觉得用“ make”并不是对可移植性的保证,或者说可能会面临可移植性问题,这是更正确的说法。 (2认同)

mar*_*ara 4

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

只需输入

g++ main.cpp utility.cpp 
Run Code Online (Sandbox Code Playgroud)

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

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

关于学习linux,有很多东西需要学习。我什至无法告诉你从哪里开始,但没有什么秘密。不像微软的产品,你必须学习解决方法才能让你的代码运行。

哦,这是 g++ 信息:http://homepages.gac.edu/~mc38/2001J/documentation/g++.html