我维护内部基础架构库 - 让我们称之为libcluracan
。此库必须静态链接,因为它在使用代码的外部计算机上不存在。
这意味着我不是使用链接器创建libcluracan.so
文件,而是使用libcluracan.a
命令创建ar
文件
现在我正在尝试向libcluracan
添加一些新功能,但它需要与外部库进行链接 - 特别是-lfltk
,但具体细节并不重要。重要的是,我可以假设外部计算机有这个库(以及我需要的任何其他公共库)。
最大的问题是我无法改变内部程序员编译(好吧,链接)他们的代码的方式。
如果我们一直在使用动态libcluracan.so
库,我只需将-lfltk
添加到链接器并忘记它 - 程序员将继续与-lcluracan
链接并获取{{1自动。
我需要找到一种方法来使用静态-lfltk
库做同样的事情。
TL; DR
有没有办法创建一个静态libcluracan.a
库,在使用时自动链接到另一个动态.a
库?
答案 0 :(得分:1)
最大的问题是我无法改变内部程序员编译(好吧,链接)他们代码的方式。
这确实是 一个大问题。您的内部程序员应该使用make
(或类似的自动构建系统),并且更改将是微不足道的。
无法在任意UNIX系统上实现您想要的功能。
如果您使用的是GNU工具链,特别是GNU-ld或gold
,那么您可以通过链接libcluracan.so
来实现您想要的效果,其中libcluracan.so
不是共享库,但是链接器脚本,如下所示:
GROUP ( libcluracan.a libfltk.so )