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

how to build executable file for cpp programm

本文关键字:构建 可执行文件 程序 CPP      更新时间:2023-10-16

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

使用 GCC 编译程序。

$ gcc test.cpp

我想将我的程序作为应用程序分发。当我双击 a.out 文件时,它可以在我的 PC 上运行,但在其他 (Linux) PC 上不起作用。

我的问题是:


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

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

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

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

http://sourceforge.net/projects/mingw-w64/见这里(但由于 sourceforge.net 上的 mingw-w64 项目正在转移到 mingw-w64.org 我建议也检查一下 mingw-w64.org)

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

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

gcc -static -o your_exe_file test.cpp

回答#2。几个选项:

  • 编写可移植代码,并使用 C 编译器针对要部署到的每个平台进行编译。你最终会得到三个可执行文件:一个用于Linux,另一个用于Windows,另一个用于OS X。

  • 发布源代码并让用户做编译工作。

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

附加说明:

使用 g++ 编译C++源代码(gcc 用于纯 C,不包括C++标准库)。
如果要使用 gcc(强烈建议不要使用),请将源文件链接到标准C++库。

gcc source.cpp -lstdc++