Я пытаюсь скомпилировать и связать образец файла с SDK Novell LDAP C, но ссылка не работает из-за 3 неразрешенных символов в библиотеке pthread
. Я использую gcc 4.8.1 на Ubuntu 13.10 (Saucy). Я правильно включил библиотеку pthread
в качестве последней библиотеки в командной строке, но эти конкретные символы до сих пор не разрешены.Почему я получаю неопределенные ссылки на pthread_mutexattr_settype?
$ gcc -Wl,-trace-symbol=pthread_mutexattr_settype -Wl,-trace-symbol=pthread_mutexattr_init -Wl,-trace-symbol=pthread_mutex_trylock -o search search.o -L../lib -lldapsdk -lpthread
../lib/libldapsdk.so: reference to pthread_mutexattr_settype<br>
../lib/libldapsdk.so: reference to pthread_mutexattr_init<br>
../lib/libldapsdk.so: reference to pthread_mutex_trylock<br>
/lib/i386-linux-gnu/libpthread.so.0: definition of pthread_mutexattr_settype<br>
/lib/i386-linux-gnu/libpthread.so.0: definition of pthread_mutexattr_init<br>
/lib/i386-linux-gnu/libpthread.so.0: definition of pthread_mutex_trylock<br>
../lib/libldapsdk.so: undefined reference to pthread_mutexattr_settype<br>
../lib/libldapsdk.so: undefined reference to pthread_mutex_trylock<br>
../lib/libldapsdk.so: undefined reference to pthread_mutexattr_init<br>
collect2: error: ld returned 1 exit status
$ readelf --all /lib/i386-linux-gnu/libpthread.so.0|grep pthread_mutexattr_settype<br>
114: 00009d90 36 FUNC GLOBAL DEFAULT 13 [email protected]@GLIBC_2.1<br>
493: 00009d90 36 FUNC GLOBAL DEFAULT 13 pthread_mutexattr_settype
Попробуйте передать '-pthread' в компилятор (без' -l'). См. Также [gcc - значение флага -pthread при компиляции] (http://stackoverflow.com/q/2127797/341970). – Ali
Это сделало трюк! Благодаря! – Bob
ОК. Рад, что это помогло! – Ali