我维护我们的内部基础结构库-称之为libcluracan
。该库必须静态链接,因为使用代码的外部计算机上不存在该库。
这意味着,不是libcluracan.so
使用链接器创建libcluracan.a
文件,而是使用ar
命令创建文件
现在,我正在尝试向中添加一些新功能libcluracan
,但它需要与外部库进行链接-特别是-lfltk
,但具体细节并不重要。重要的是,我可以假设外部计算机具有此库(以及我需要的任何其他公共可用库)。
最大的问题是我无法更改内部程序员如何编译(以及链接)他们的代码。
如果我们一直在使用动态libcluracan.so
库,我只会将其添加-lfltk
到链接器中,而不必理会它-程序员将继续与之链接-lcluracan
并-lfltk
自动获取。
我需要找到一种方法来对我们的静态libcluracan.a
库执行相同的操作。
TL; DR
有没有一种创建静态.a
库的方法,该静态.so
库在使用时会自动链接到另一个动态库?
最大的问题是我无法更改内部程序员如何编译(以及链接)他们的代码。
这确实是一个大问题。您的内部程序员应使用make
(或类似的自动构建系统),并且更改将是微不足道的。
无法在任意UNIX系统上实现所需的方法。
如果您使用的是GNU工具链,尤其是GNU-ld或gold
,则可以通过与链接实现所需的功能libcluracan.so
,其中libcluracan.so
不是共享库,而是链接程序脚本,如下所示:
GROUP ( libcluracan.a libfltk.so )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句