一个unix发行版上的静态链接是否有效但不是另一个?

5 unix g++

如果我静态链接ubuntu中的可执行文件,那么该可执行文件是否有可能无法在另一个发行版中工作,例如mint os?还是fedora?我知道处理器类型会受到影响,但除此之外还有什么我必须要警惕的吗?对不起,如果这是一个愚蠢的问题.谢谢你的帮助

Sin*_*ion 5

有一些极端情况,但在大多数情况下,你应该与静态链接良好的形状.浮现在脑海中的是libnss.这个特定的库基本上不可能静态链接,因为它的工作方式(权限,身份验证,安全任务).只要glibc版本相似,你应该对这个问题没问题.

如果你的程序需要使用内核的微妙功能,比如卷管理器,你就有很大的机会让你的程序在发行版之间静态链接,因为内核接口可能会略有改变.

大多数典型的应用程序,即讨论可移植性甚至有意义的应用程序,如网络服务,gui应用程序,语言工具(如编译器/解释器)都不会遇到任何问题.


Dav*_*d Z 3

如果您静态链接一台计算机上的程序,然后将其移动到系统运行方式基本相同的另一台计算机上,那么它应该可以正常工作。这就是静态链接的要点;该程序没有依赖其他文件 - 它是完全独立的,因此只要它可以运行,它就会像在“主机”系统上一样运行。

这与动态链接形成对比,动态链接中程序在运行时合并其他文件(库)的元素。如果将动态链接的程序移动到它所依赖的库不同(或不存在)的另一个系统,它将无法工作。