我的构建环境是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
静态链接时,为什么会出现错误?