如何为cpp程序构建可执行文件

时间:2013-12-26 10:07:06

标签: c++ gcc

我正在研究Ubuntu并编写正常的c ++程序。

使用gcc编译程序。

$ gcc test.cpp

我想将我的程序作为应用程序分发。当我双击a.out file.it在我的电脑上工作但不能在其他(Linux)PC上工作时。

我的问题是:


  1. GCC要求客户端PC执行应用程序吗?

  2. 如何为所有平台(Win,Linux,OS x)构建可执行文件?

4 个答案:

答案 0 :(得分:2)

您是否正在尝试在Linux环境中编译Windows PE文件?

如果是这样,您将需要mingW工具链

请参阅此处http://sourceforge.net/projects/mingw-w64/(但由于sourceforge.net上的mingw-w64项目正在转向mingw-w64.org,我建议还要检查mingw-w64.org

答案 1 :(得分:1)

回答#1。不可以。但目标平台需要应用程序所需的相同(或兼容)动态库。如果有疑问,请使用静态链接进行编译。它可以帮助您在不同的Linux发行版上运行相同的代码。

gcc -static -o your_exe_file test.cpp

回答#2。几个选项:

  • 编写可移植代码,并使用C编译器为您要部署的每个平台编译它。最终将有三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OS X.

  • 发布源代码并让用户进行编译。

  • 使用Java,Python,C#等语言或其他任何不需要重新编译的语言在多个平台上运行。

答案 2 :(得分:1)

WindowsLinux运行时间不同。您需要在目标体系结构上重新编译代码。如果您在一个Linux发行版上编译了代码,那么您可能可以在另一个Linux发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用-static标志来避免共享库可能出现的问题。如果必须在一台针对另一台计算机的计算机上编译代码,则需要cross-compiler toolchain。举一个小例子,如果你想让你的代码在嵌入式系统上运行,你需要使用类似newlib的东西来移植特定于OS的函数。因为Linux发行版都使用相同的内核,所以这不是问题。但显然,WindowsLinux完全不同。

答案 3 :(得分:0)

附加说明:

使用 g ++ 编译C ++源代码( gcc 适用于普通C,不包含C ++标准库)。
如果您想使用 gcc (强烈建议不要),请将源文件与标准C ++库链接。

gcc source.cpp -lstdc++