如何为cpp程序构建可执行文件 我在Ubuntu工作,编写普通C++程序。 使用gcc编译程序。
我想将我的程序作为应用程序分发。当我双击.out文件时。它在我的电脑上可用,但在其他(Linux)电脑上不可用 我的问题是:如何为cpp程序构建可执行文件 我在Ubuntu工作,编写普通C++程序。 使用gcc编译程序。,c++,gcc,C++,Gcc,我想将我的程序作为应用程序分发。当我双击.out文件时。它在我的电脑上可用,但在其他(Linux)电脑上不可用 我的问题是: GCC需要在客户端PC上执行应用程序吗 如何为所有平台(Win、Linux、OSX)构建可执行文件 您正在尝试在Linux环境下编译Windows PE文件 如果是这样,您将需要mingW工具链接 请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)您正在尝试在Linux环境下编译Window
您正在尝试在Linux环境下编译Windows PE文件 如果是这样,您将需要mingW工具链接
请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)您正在尝试在Linux环境下编译Windows PE文件 如果是这样,您将需要mingW工具链接 请参见此处(但由于sourceforge.net上的mingw-w64项目正在迁移到mingw-w64.org,我建议您也检查一下)回答#1。不需要。但是目标平台需要与应用程序期望的相同(或兼容)的动态库。如果有疑问,用静态链接编译它。它可以帮助您在不同的Linux发行版上运行相同的代码
gcc-static-o您的文件test.cpp
对#2的答复。有几种选择:
- 编写可移植代码,并使用C编译器为您要部署到的每个平台进行编译。您将得到三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OSX
- 发布源代码,让用户进行编译
- 使用Java、Python、C#或任何其他不需要重新编译的语言在多个平台上运行
- 回答第1条。不需要。但是目标平台需要与应用程序期望的相同(或兼容)的动态库。如果有疑问,用静态链接编译它。它可以帮助您在不同的Linux发行版上运行相同的代码
gcc-static-o您的文件test.cpp
对#2的答复。有几种选择:
- 编写可移植代码,并使用C编译器为您要部署到的每个平台进行编译。您将得到三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OSX
- 发布源代码,让用户进行编译
- 使用Java、Python、C#或任何其他不需要重新编译的语言在多个平台上运行
gcc source.cpp -lstdc++
补充说明:
< >使用<强> g++<强>编译C++源(<强> gcc是针对普通C,不包括C++标准库)。
如果您想使用<强> GCC (强烈劝阻),则将源文件链接到标准C++库。
gcc source.cpp -lstdc++
Windows
和Linux
运行时是不同的。您需要在目标体系结构上重新编译代码。如果您在一个linux发行版上编译了代码,那么您就有可能在另一个发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用-static
标志来避免共享库可能出现的问题。如果您必须在一台针对另一台机器的机器上编译代码,则需要交叉编译器工具链。举一个小例子,如果您想让代码在嵌入式系统上运行,您需要使用newlib之类的东西移植操作系统特定的函数。因为Linux
发行版都使用相同的内核,所以这不是问题。显然,Windows
和Linux
是完全不同的。Windows
和Linux
运行时是不同的。您需要在目标体系结构上重新编译代码。如果您在一个linux发行版上编译了代码,那么您就有可能在另一个发行版上运行它,因为没有库冲突,并且架构是相同的。您可以使用-static
标志来避免共享库可能出现的问题。如果您必须在一台针对另一台机器的机器上编译代码,则需要交叉编译器工具链。举一个小例子,如果您想让代码在嵌入式系统上运行,您需要使用newlib之类的东西移植操作系统特定的函数。因为Linux
发行版都使用相同的内核,所以这不是问题。显然,Windows
和Linux
是完全不同的。你真的应该调用g++
。你不需要在客户端使用GCC,但你必须在客户端为目标体系结构和操作系统编译。可执行文件通常不可在平台之间移植,您必须为每个目标重新生成。您应该真正调用g++
。客户端不需要GCC,但必须针对客户端上的目标体系结构和操作系统进行编译。可执行文件通常不能在平台之间移植,您必须为每个目标重新生成。