我试着用

ar -r -c -s libtestlib.a *.o

如本教程中所述http://matrixprogramming.com/Tools/CompileLink.html

但是在链接库时出现以下错误
g++ -o uni2asc uni2asc.o -L../Modules -ltestlib

../Modules/libtestlib.a: could not read symbols: Archive has no index; run ranlib to add one
collect2: ld returned 1 exit status

我也用ranlib尝试过,但仍然出现错误。
我正在使用ubuntu9.10
请为我建议一些解决方案

最佳答案

您的归档命令看起来不错,可以尝试以下操作。
1)在归档/静态库中获取目标文件

ar -t libtestlib.a

2)对于第1步中的每个目标文件(例如foo.o)
file foo.o

这将告诉您目标文件的格式。如果目标文件是为其他平台编译的,则将导致无法为归档建立索引。
若要更正此问题,您将需要重新编译这些文件。
3)对于步骤1中的每个目标文件,执行
nm foo.o

这将列出从文件导出的符号。

关于gcc - 无法读取符号:存档没有索引;运行ranlib添加一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2765240/

10-09 19:45