如何创建一个链接到另一个库的静态库,并且可以由链接这两个库的第三个程序使用?

时间:2013-07-31 23:08:52

标签: gcc linker openssl static-libraries fips

对于令人困惑的措辞感到抱歉。

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

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

每当program调用libtwo.a中的方法时,都应转到libtwo.a加载的program。但是,只要program调用libone.a中调用libtwo.a中的方法的方法,就应该调用libtwo.a时嵌入的libone.a创建。是的我明白这会通过加载两个相同的库来炸毁文件大小但是我没关系。

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

这可能吗?

1 个答案:

答案 0 :(得分:1)

  

这可能吗?

不,这根本不能用归档库完成(可以使用共享库完成,但需要非常小心以避免符号冲突)。