我创建了一个静态库 , libstuff.a
,gcc
和ar
. 我已经将库安装/custom/lib/dir/
在/custom/include/dir/
. 当我尝试针对存档编译另一个应用程序时,我遇到了问题。
我试图编译的应用程序基本上使用gcc -L/custom/lib/dir/ -I/custom/include/dir/ -lstuff
.
当我尝试编译时,我收到关于我在中声明stuff.h
和定义的函数的错误stuff.c
。
main.c:51: undefined reference to `stuff_init'
collect2: error: ld returned 1 exit status
如果我libstuff.a
从/custom/lib/dir/
编译器中删除抱怨/usr/bin/ld: cannot find -lstuff
。如果我把它放回去,它不会抱怨。所以它正确地找到了存档。
#include "stuff.h"
如果我从gcc中删除该行代码,则会main.c
抱怨stuff_init
未定义,因此它可以正确找到标头。
如果我运行nm libstuff.a
,输出包括0000000000000000 T stuff_init
. 所以函数是在归档文件中定义的。
那么我做错了什么?