c++ - Linux 中的静态链接可移植吗?

标签 c++ c linux

Linux 中的静态链接可移植吗?我的意思是,我可以在 gcc 中使用 -static 选项并静态链接每个依赖项,以便从 ldd 获得干净的输出,并期望生成的可执行文件可以在另一台安装了 Linux 的计算机?当然前提是CPU架构和内核版本兼容。

最佳答案

简短的回答:差不多。

这将生成一个二进制文件,该二进制文件将在与设计软件的内核相同或兼容的内核上运行。

它可能不考虑目录结构,并且如果二进制文件期望能够动态加载任何外部依赖项,则这可能不起作用。

假设没有什么太奇特的事情发生,它会工作得很好。

这大概就是 Go 编译器为实现将二进制文件传送到几乎任何地方所做的事情。如果您希望进行具有破坏性的操作系统升级,这也是一种使构建向前兼容的方法。

此外,这些静态二进制文件可以在与 Linux 兼容的 FreeBSD 内核中运行。只要内核和用户空间兼容,二进制文件就应该可以工作。

一如既往,测试。

关于c++ - Linux 中的静态链接可移植吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31801824/

相关文章:

c++ - 从其他专门函数调用专门函数

c - formats.h 包含 WAV 文件格式信息的文件

c++ - 'const Obj' 和 'Obj &' 是怎么回事?

c++ - 如何调用 lambda 模板?

c++ - 在 C++ 中从构造函数显式调用析构函数是不好的做法吗?

c - DLL 导出 __stdcall 不带 DEF 文件并用 VS 修饰函数名称

c - 将 ASN.1 生成的类添加到 C 项目

c - 在 make 文件中包含多个子目录

c++ - 谷歌 v8 新失败在 linux 共享库引发 "segment error"

将 ARP 表复制到数组