1

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

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

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

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

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

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

TL;博士

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

4

1 回答 1

1

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

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

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

如果您使用的是 GNU 工具链,特别是 GNU-ld 或gold,那么您可以通过链接来实现您想要的libcluracan.so,这里libcluracan.so不是共享库,而是链接器脚本,如下所示:

GROUP ( libcluracan.a libfltk.so )
于 2013-10-19T14:36:34.937 回答