gpt4 book ai didi

c - 为什么 gcc 不支持将动态库链接到静态二进制文件

转载 作者:行者123 更新时间:2023-12-05 01:33:11 25 4
gpt4 key购买 nike

背景如下:有3'rd party provider在32b中为我们提供了一个libveryfancylib.so。使用该库的软件也有相当多的其他 linux 库依赖项(如 QT),但它们是开源的,因此静态链接没有问题。目标平台是 64b 并运行 Debian 7。

我们可以将程序与二进制 + 动态库一起发布,没问题,但我宁愿看到没有依赖项的单个静态二进制文件。

所以我的问题是:为什么我不能将动态库链接到静态二进制文件?我的意思是缺少哪些信息,或者它只是很少需要的功能 -> 未实现。

最佳答案

We can ship the program with binary + dynamical libraries, no problem, but i would rather see single static binary with no dependencies.

您要解决的问题是什么?

您可以遵循 Linux 上大多数商业应用程序的模型:将您的可执行文件、共享库和其他资源放在一个目录中(可能还有子目录)。将您的可执行文件链接到那些共享库时,传递 -Wl,-rpath,'$ORIGIN'(在 make 中使用 -Wl,-rpath,'$$ORIGIN')到链接器,以便在启动您的应用程序时,运行时链接器会在可执行文件所在的同一目录中查找所需的共享库。

然后将该目录归档并提供给您的用户。

关于c - 为什么 gcc 不支持将动态库链接到静态二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25520290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com