首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法读取符号:存档没有索引;请运行ranlib添加一个

无法读取符号:存档没有索引;请运行ranlib添加一个
EN

Stack Overflow用户
提问于 2010-05-04 20:33:25
回答 3查看 70.3K关注 0票数 28

我试着用来制作库

代码语言:javascript
复制
ar -r -c -s libtestlib.a *.o

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

但在与库链接时,会出现以下错误

代码语言:javascript
复制
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,请给我一些解决方案

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-05 03:15:01

您的存档命令看起来很好,您可以尝试以下操作。1)获取archive/static库中的对象文件

代码语言:javascript
复制
ar -t libtestlib.a

2)对于步骤1中的每个对象文件(例如foo.o)

代码语言:javascript
复制
file foo.o 

这将告诉您目标文件的格式。如果目标文件是为不同的平台编译的,这将导致无法为存档构建索引。要纠正此问题,您需要重新编译这些文件。

3)对于步骤1中的每个目标文件,执行

代码语言:javascript
复制
nm foo.o

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

票数 27
EN

Stack Overflow用户

发布于 2013-04-12 20:46:36

当我遇到这个错误时,我正在使用MinGW编译一个windows应用程序,所以我找到了内置的MinGW命令:

代码语言:javascript
复制
i686-w64-mingw32-ar

代码语言:javascript
复制
x86_64-w64-mingw32-ar

如果您在MinGW中遇到问题,请尝试使用这些代码而不是ar。他们都帮我解决了这个问题。

票数 15
EN

Stack Overflow用户

发布于 2012-12-11 04:09:10

libtool还有一个有用的选项:-export-symbols-regexp

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2765240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档