【发布时间】:2013-04-16 02:35:55
【问题描述】:
我的构建环境是 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静态链接会报错?
【问题讨论】:
标签: c gcc linker shared-libraries static-libraries