【问题标题】: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 和这两个库都在开发中。

如果可以的话怎么办?

【问题讨论】:

    标签: gcc shared-libraries autotools automake


    【解决方案1】:

    编辑:在我研究并发现有关 libtool 手册和反对它的邮件列表的证据后,我决定完全删除我之前的答案。

    是的,您可以拥有相互依赖的库。您最终可能只得到静态库(可以有未定义的符号),因为并非所有平台都完全支持对共享库的循环依赖。

    Libtool 有一些代码来处理共享库的复杂依赖关系,但它并没有完全移植到所有平台;即使您传入--disable-static --enable-shared,您最终也会得到更保守的实现(静态库)。

    【讨论】:

    • 所以,你只想说,首先我编译了其他库的函数只依赖的库,然后编译第二个库,然后再次编译第一个库,并依赖第二个。
    • 确实,我忘记了链接依赖;我进行了更改,因此针对两者的可执行链接,并且明确指示 libtool 在链接时不要尝试解析符号。
    • 我编辑我的答案更合适。似乎最近的 libtool 版本更加保守,我的一个旧项目在 windows 上使用 DLL 执行此操作将不再编译为 DLL。我假设您需要动态库,因为静态库不需要解析符号。
    猜你喜欢
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多