我了解动态链接的好处(旧代码可以自动利用库升级的优势,它具有更高的空间利用率),但是它肯定有缺点,尤其是在异构Linux生态系统中。这使得很难分发与发行版无关的二进制文件,该二进制文件“仅能正常工作”,并且由于系统升级破坏了向后兼容性或将回归引入共享库,使得先前工作的程序更有可能被破坏。

鉴于这些缺点,为什么动态链接似乎受到普遍青睐?为什么即使对于小型应用程序,也很难找到静态链接的,与发行版无关的Linux二进制文件?

最佳答案

有以下三个主要原因:

  • GNU libc不支持对其自身的静态链接,因为它在内部广泛使用了dlopen。 (这意味着与其他任何事物的静态链接都不那么值得,因为如果不替换C库就无法获得完全静态的二进制文件。)
  • 发行版不支持与其他任何事物的静态链接,因为当库具有安全漏洞时,它会增加其要做的工作量。
  • 分发对与分发无关的二进制文件毫无兴趣。他们想获取源代码并自己构建它。

  • 您还应该记住,Linux-not-Android软件生态系统完全基于源代码。如果您要运送二进制文件,并且您不是发行商,那您做错了。

    10-08 20:02