2 u012782377 u012782377 于 2014.03.19 14:35 提问

linux 链接动态库时产生如下错误

g++ ADS_APIServer.o ../../udt/src/libudt.so ../Commlib/libCommlib.so libADS_APIServer.so -o ADS_APIServer
ADS_APIServer.o: In function soapOpenThread(void*)':
ADS_APIServer.cpp:(.text+0x8b0): undefined reference to
pthread_create'
ADS_APIServer.o: In function main':
ADS_APIServer.cpp:(.text+0xd85): undefined reference to
pthread_create'
ADS_APIServer.cpp:(.text+0xdb1): undefined reference to pthread_create'
ADS_APIServer.cpp:(.text+0xddd): undefined reference to
pthread_create'
ADS_APIServer.cpp:(.text+0xe09): undefined reference to pthread_create'
ADS_APIServer.o:ADS_APIServer.cpp:(.text+0xe38): more undefined references to
pthread_create' follow
../../udt/src/libudt.so: undefined reference to pthread_mutex_trylock'
../Commlib/libCommlib.so: undefined reference to
pthread_mutexattr_settype'
../../udt/src/libudt.so: undefined reference to pthread_key_create'
../Commlib/libCommlib.so: undefined reference to
dlsym'
../Commlib/libCommlib.so: undefined reference to dlerror'
../../udt/src/libudt.so: undefined reference to
pthread_getspecific'
../Commlib/libCommlib.so: undefined reference to pthread_mutexattr_destroy'
../Commlib/libCommlib.so: undefined reference to
pthread_mutexattr_init'
../../udt/src/libudt.so: undefined reference to pthread_key_delete'
../Commlib/libCommlib.so: undefined reference to
dlopen'
../../udt/src/libudt.so: undefined reference to pthread_setspecific'
../Commlib/libCommlib.so: undefined reference to
dlclose'
../../udt/src/libudt.so: undefined reference to `pthread_join'

1个回答

u012782377
u012782377   2014.03.19 16:03

自己顶下,随便结束问答,问题已解决,问题产生的原因是:
pthread这个库不是系统库,在链接时需要在命令行指定 -lpthread 项
dl* 则需要在命令行指定 -ldl 项

另外在linux下执行程序时,如果需要链接动态库,下面两个命令有用
1 echo LD_LIBRARY_PATH # 该命令查看当前的配置路径
2 export LD_LIBRARY_PATH=.:../*:/home/.. # 添加路径,其中每个路径以“:”分隔

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!