静态地将带有GCC的C 应用程序编译为二进制
Statically compile a C++ app with GCC into a binary
如何使用针对Unix的Ubuntu机器上的GCC静态编译应用程序?我将如何针对具有不同版本的GLIBC或任何Unix C 应用程序通常取决于的32位/64位计算机和机器?然后,我想以二进制形式分发此应用程序,然后在Unix机器上运行它,而无需从源头进行编译。
同样,我可以在Windows上编译此应用程序,以便它可以在Unix上运行?
对其进行编译,因此它将在Linux上运行,就像这样:
:g++ -o myapp myapp-a.cop myappb.cop -L mylib1
这应该在大多数版本的Linux和一些版本的FreeBSD上使用。
这在libstdc 上没有静态链接,但这也许是更好的方法。根据经验,您应动态地链接到OS C LIB,即使SYSCALL ABI更改,您的应用程序也可以正常工作。
您可以将32位从64位机器中加以编译为" -m32",因为您的旗帜有一个。它将汇编模式设置为32位。
至于在Windows上编译:是的。你能行的。它称为交叉编译。您首先需要编译一个针对Linux的工具链。
这是您可以创建静态编译的32位的方法,该如何可执行,该可执行文件应在任何已知的Linux上使用,而无需抱怨丢失的libs:
g++ -m32 -static -o myprog myprog.cpp
一个缺点是,可执行文件的最小尺寸至少为600 kb。
注意:如果您遇到编译错误,请确保安装了包g++-multilib
。
相关文章:
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 是否可以编译 Gtk+ 应用程序以同时在 Gtk 2 和 3 上运行
- 如何在 docker 中使用静态 opencv 库编译 c++ 应用程序
- 使用 Bazel 编译 QT 应用程序时访问资源
- 如何编译使用从不同编译器编译的库的应用程序?
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- MSVC 2010 编译应用程序和 MSVC 2019 编译应用程序之间的行为差异
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 由于____chkstk_darwin,在Catalina上使用部署10.10编译的MacOS应用程序在HighSierra版本<崩溃
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- 如何使用cmake和Visual Studio 2019编译简单的Windows应用程序?
- qt 命令行应用程序编译
- QML应用程序编译一个 *form.ui.qml文件,但忽略了关联的.qml文件
- 静态地将带有GCC的C 应用程序编译为二进制
- 如何在Windows 64位计算机中将c++应用程序编译为x64模式
- 如何将我的Qt应用程序编译成一个静态库
- C++应用程序编译错误:找不到-lpthread
- 使用OpenCV和Raspicam的RaspberryPi c++应用程序编译问题
- 使用Qt和Boost为应用程序编译CppUTest测试时的奇怪行为
- GPS 应用程序编译错误