gpt4 book ai didi

c++ - 如何创建一个自动链接到动态库的静态库?

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:14 32 4
gpt4 key购买 nike

我维护我们的内部基础设施库 - 我们称它为 libcluracan。该库必须静态链接,因为它不存在于使用代码的外部计算机上。

这意味着我不是使用链接器创建一个 libcluracan.so 文件,而是使用 ar 命令<创建一个 libcluracan.a 文件

现在我正在尝试向 libcluracan 添加一些新功能,但它需要与外部库链接 - 特别是 -lfltk,但细节并不重要.重要的是我可以假设外部计算机有这个库(以及我需要的任何其他公开可用的库)。

最大的问题是我无法改变内部程序员编译(好吧,链接)他们的代码的方式。

如果我们一直在使用动态 libcluracan.so 库,我只需将 -lfltk 添加到链接器中,然后忘记它 - 程序员将继续使用 -lcluracan 并自动获取-lfltk

我需要找到一种方法来用我们的静态 libcluracan.a 库做同样的事情。

长话短说

有没有办法创建一个静态的 .a 库,在使用时自动链接到另一个动态的 .so 库?

最佳答案

The biggest problem is that I can't change how the in-house programmers compile (well, link) their code.

确实是个大问题。您的内部程序员应该使用 make(或类似的自动构建系统),并且更改将是微不足道的。

无法在任意 UNIX 系统上实现您想要的。

如果您正在使用 GNU 工具链,特别是 GNU-ld 或 gold,那么您可以通过链接 libcluracan.so 来实现您想要的,其中 libcluracan.so 不是共享库,而是链接描述文件,如下所示:

GROUP ( libcluracan.a libfltk.so )

关于c++ - 如何创建一个自动链接到动态库的静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19463292/

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