【发布时间】: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 中的方法时,它应该转到加载有program 的libtwo.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