【问题标题】:How can I create a static library that links against another library and can be used by a third program that links both the libraries?如何创建一个链接到另一个库的静态库,并且可以由链接这两个库的第三个程序使用?
【发布时间】:2013-07-31 23:08:51
【问题描述】:

抱歉,措辞令人困惑。

基本上我想创建一个需要链接另一个静态库 (libtwo.a) 的静态库 (libone.a)。 libone.a libtwo.a 都通过以下方式静态链接到另一个程序(我们称之为program):

$(CC) -o program something.o anotherthing.o -L/path/to/lib -lone -ltwo

每当program 调用libtwo.a 中的方法时,它应该转到加载有programlibtwo.a。但是每当program 调用libone.a 中的一个方法并调用libtwo.a 中的一个方法时,它应该调用libtwo.a,该libtwo.a 是在创建libone.a 时嵌入的。是的,我知道这会通过加载两个相同的库来增加文件大小,但我可以接受。

我之所以尝试这样做是因为我拥有的 program 使用的是 OpenSSL(在本例中为 libcrypto.a),而我的静态库也在使用 libcrypto。但是,我的库中有一个要求 OpenSSL 必须是 FIPS 有效的(即FIPS_mode_set(1)),但这样做会破坏program。总之我想把OpenSSL的库用到。 program 调用的本机应该使用它自己的,而我的库调用的应该使用我链接的并且是 FIPS 有效的。

这可能吗?

【问题讨论】:

    标签: gcc linker openssl static-libraries fips


    【解决方案1】:

    这可能吗?

    不,存档库无法做到这一点(它可以使用共享库完成,但需要非常小心以避免符号冲突)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多