gpt4 book ai didi

gcc - 在 gcc 中同时使用静态和动态链接库

转载 作者:行者123 更新时间:2023-12-02 04:02:33 28 4
gpt4 key购买 nike

我需要分发一个可以在尽可能多的 x86 Linux 发行版上运行的二进制文件。这意味着我必须静态链接一些库,例如 glibc,因为用户可能没有我使用的版本。其他库必须动态链接,例如 fontconfig,因为它依赖于缓存文件格式和硬编码位置,这些位置在每个系统上可能有所不同。

执行此操作的命令行选项是什么?如果我指定 -static,那么 gcc 将拒绝动态链接任何库。

最佳答案

在现代 UNIX 或 Linux 系统上,针对任何系统库(尤其是针对 libc)进行静态链接会显着降低二进制文件的可移植性。只是不要这样做。

相反,使用向后兼容性(在旧系统上链接的二进制文件继续在所有较新的系统上运行)对您有利,可以通过在旧系统上链接二进制文件(我使用 RedHat 6.2,并且我还没有见过 Linux 系统)我的二进制文件在过去 8 年内不会运行),或者使用类似 autopackage 的东西(此答案写完后已被删除)。

回答您原来的问题:

gcc main.o -Wl,-Bstatic -lfoo -Wl,-Bdynamic

将导致链接器使用 libfoo 的存档版本。 [准确地使用尾随 -Wl,-Bdynamic 非常重要,这样您就不会强制使用静态 libc。]

关于gcc - 在 gcc 中同时使用静态和动态链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/809794/

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