我有两个文件->fact.h
和文件夹中main.c
。具有调用函数的 main 函数。我正在使用 ar 命令创建存档 ->/home/snyp1/new
main.c
fact(int x)
fact.h
.a
snyp1@Snyp:~/new$ ar -r -s libfact.a fact.o
ar: creating libfact.a
fact.h fact.o libfact.a main.c
snyp1@Snyp:~/new$ gcc main.c -L/home/snyp1/new -lfact -o main
/home/snyp1/new/libfact.a: could not read symbols: Archive has no index; run ranlib to add one
collect2: ld returned 1 exit status
snyp1@Snyp:~/new$ ranlib libfact.a
snyp1@Snyp:~/new$ gcc main.c -L/home/snyp1/new -lfact -o main
/home/snyp1/new/libfact.a: could not read symbols: Archive has no index; run ranlib to add one
collect2: ld returned 1 exit status
我在 ubuntu 12.04 上。请让我知道有什么问题。(另外,如果我不使用-L/.../new
,gcc 会说它找不到“lfact”,可能是因为它不在/usr/local/lib
)
编辑:好的,我找到了原因。这是由于我fact.h
用来构建fact.o
然后将其放入库中的事实,它没有按预期工作。所以我现在把它改成了file.c
现在工作正常。我应该提供这些信息,对不起。虽然我不知道为什么会出现这种问题。如果没有至少一个.c
文件,就不能制作库吗?