我的构建环境是CentOS 5。我有一个名为 libcunit 的第三方库。我用 autotools 安装了它,它同时生成libcunit.a
和libcunit.so
. 我有自己的应用程序,它与一堆共享库链接。libcunit.a
位于当前目录中libcunit.so
,其他共享库位于/usr/local/lib/
. 当我编译时:
gcc -o test test.c -L. libcunit.a -L/usr/local/lib -labc -lyz
我收到一个链接错误:
libcunit.a(Util.o): In function `CU_trim_left':
Util.c:(.text+0x346): undefined reference to `__ctype_b'
libcunit.a(Util.o): In function `CU_trim_right':
Util.c:(.text+0x3fd): undefined reference to `__ctype_b'
但是当我编译时.so
:
gcc -o test test.c -L/usr/local/lib -lcunit -labc -lyz
它编译得很好,运行也很好。
为什么与静态链接时会出错libcunit.a
?