Linux中的静态链接是否可移植?我的意思是,我可以在gcc中使用-static
选项并静态链接每个依赖项以获得ldd
的干净输出,并期望生成的可执行文件在另一台安装了Linux的计算机中可移植地运行吗?当然,鉴于CPU架构和内核版本兼容。
答案 0 :(得分:2)
简短回答:差不多。
这将生成一个二进制文件,该二进制文件将在与该软件设计的内核相同或兼容的内核上运行。
它可能没有考虑目录结构,如果二进制文件希望能够动态加载任何外部依赖项,那可能不起作用。
假设没有什么太花哨的话,它会很好用。
这与Go的编译器大致相同,可以在任何地方发送二进制文件。如果您希望进行具有破坏性的操作系统升级,这也是一种使构建转发兼容的方法。
此外,这些静态二进制文件可以在兼容Linux的FreeBSD内核中运行。只要内核和用户空间兼容,二进制文件就可以工作。
一如既往,测试。
答案 1 :(得分:0)
是。静态链接意味着它不依赖于任何其他库。
答案 2 :(得分:0)
也许。您不必担心动态库依赖项。您的静态链接库可能使用系统调用或旧内核没有的其他内核接口,因此您只能向前兼容(Linux内核具有非常强大的向后兼容策略)。您可能需要担心的唯一事情是您的静态链接库可能依赖的外部文件(如本地化数据库等)。