Autotools:是不是可以进行共享库的交叉链接
Posted
技术标签:
【中文标题】Autotools:是不是可以进行共享库的交叉链接【英文标题】:Autotools: Is it possible to do Cross Linking of Shared LibrariesAutotools:是否可以进行共享库的交叉链接 【发布时间】:2013-12-27 19:21:31 【问题描述】:我可能很愚蠢,但认为可以进行交叉链接:
Lib A Lib A1
=========== Calling Func A =========== A calls Func A1 =============
| EXE File | ===> | Func A | ============> | Func A1 |
=========== | Func B | A1 calls fun B =============
=========== <===========
EXE 和这两个库都在开发中。
如果可以的话怎么办?
【问题讨论】:
【参考方案1】:编辑:在我研究并发现有关 libtool 手册和反对它的邮件列表的证据后,我决定完全删除我之前的答案。
是的,您可以拥有相互依赖的库。您最终可能只得到静态库(可以有未定义的符号),因为并非所有平台都完全支持对共享库的循环依赖。
Libtool 有一些代码来处理共享库的复杂依赖关系,但它并没有完全移植到所有平台;即使您传入--disable-static --enable-shared
,您最终也会得到更保守的实现(静态库)。
【讨论】:
所以,你只想说,首先我编译了其他库的函数只依赖的库,然后编译第二个库,然后再次编译第一个库,并依赖第二个。 确实,我忘记了链接依赖;我进行了更改,因此针对两者的可执行链接,并且明确指示 libtool 在链接时不要尝试解析符号。 我编辑我的答案更合适。似乎最近的 libtool 版本更加保守,我的一个旧项目在 windows 上使用 DLL 执行此操作将不再编译为 DLL。我假设您需要动态库,因为静态库不需要解析符号。以上是关于Autotools:是不是可以进行共享库的交叉链接的主要内容,如果未能解决你的问题,请参考以下文章