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