0
当我链接.o文件,有些问题发生的象征:“未定义的引用”连LIB具有的功能
gcc -L/usr/local/apr/lib -lapr-1 -pthread -laprutil-1 devpkg.o bstrlib.o db.o shell.o commands.o -o devpkg
devpkg.o: In function `main':
/root/workspace/devpkg/devpkg.c:21: undefined reference to `apr_pool_initialize'
/root/workspace/devpkg/devpkg.c:22: undefined reference to `apr_pool_create_ex'
/root/workspace/devpkg/devpkg.c:36: undefined reference to `apr_getopt_init'
/root/workspace/devpkg/devpkg.c:38: undefined reference to `apr_getopt'
我用“objdump的-T”来检查的lib,它返回:
objdump -T libapr-1.so|grep apr_pool_initialize
000000000001db00 g DF .text 00000000000000fb Base apr_pool_initialize
为什么会发生这种情况?
如果将'-l'规则放在命令的末尾,会怎样? – 2014-08-28 07:33:33
'undefined reference'指示编译错误,而不是连接错误。你应该''包含'lib的头文件(位于文件devpkg.c的顶部)。 – 2014-08-28 07:34:23
@barakmanos:不,除非我非常困惑,“未定义的参考”绝对是一个链接器错误。 (但对我来说,最好是在第一杯咖啡之前明确地表示倾向性) – 2014-08-28 07:46:29