我正在研究Ubuntu并编写正常的c ++程序。
$ gcc test.cpp
我想将我的程序作为应用程序分发。当我双击a.out file.it在我的电脑上工作但不能在其他(Linux)PC上工作时。
我的问题是:
GCC要求客户端PC执行应用程序吗?
如何为所有平台(Win,Linux,OS x)构建可执行文件?
答案 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)
Windows
和Linux
运行时间不同。您需要在目标体系结构上重新编译代码。如果您在一个Linux发行版上编译了代码,那么您可能可以在另一个Linux发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用-static
标志来避免共享库可能出现的问题。如果必须在一台针对另一台计算机的计算机上编译代码,则需要cross-compiler toolchain
。举一个小例子,如果你想让你的代码在嵌入式系统上运行,你需要使用类似newlib的东西来移植特定于OS的函数。因为Linux
发行版都使用相同的内核,所以这不是问题。但显然,Windows
和Linux
完全不同。
答案 3 :(得分:0)
附加说明:
使用 g ++ 编译C ++源代码( gcc 适用于普通C,不包含C ++标准库)。
如果您想使用 gcc (强烈建议不要),请将源文件与标准C ++库链接。
gcc source.cpp -lstdc++