链接包含其他静态库归档文件的归档

时间:2016-03-03 17:42:30

标签: c++ linux static-libraries ar

我正在尝试使用NIST的NBIS库:

http://www.nist.gov/itl/iad/ig/nbis.cfm

NBIS由几个不同的相关库组成,它们可以编译成多个存档文件。在安装它时,它们会为您提供一个选项,以安装所有单个.a文件或将它们捆绑到单个整体.a文件中。我一直在使用多个库文件,但决定尝试使用单个单片文件来简化操作。但是在我的链接步骤中使用-lnbis时使用g++尝试链接时遇到错误(使用ld使用libnbis.a: error adding symbols: Archive has no index; run ranlib to add one ):

$ ar t libnbis.a
liban2k.a
libbozorth3.a
libcblas.a
... and so forth

查看存档,它包含其他个人.a文件:

$(AR) -ru libnbis.a *.a

Makefile中生成存档的行是:ranlib libnbis.a

我尝试过运行libtool并且不会修改它。

所以,我的问题是:我如何链接到NBIS库?我知道如果需要,我需要链接到libnbis.a文件中的哪些库。它会以这种方式工作吗?或者NIST是否在尝试将各个库合并到一个存档文件中时出错?

我一直试图寻找类似的问题,看起来上面的答案是他们做错了。例如,这个问题的答案建议解压单个.a文件并将.o文件重新打包到集团档案中:

How to merge two "ar" static libraries into one

还有一条评论建议使用UllasViewController

https://stackoverflow.com/a/8170851/196561

如果我想自己构建libnbis.a文件,看起来我有几个选项。我只是想确保在我这样做之前没有某种方法可以在存档中使用.a文件。

0 个答案:

没有答案