Novell LDAP C SDKからサンプルファイルをコンパイルしてリンクしようとしていますが、pthread
ライブラリに3つの未解決のシンボルがあるため、リンクが失敗します。 Ubuntu 13.10(Saucy)でgcc4.8.1を使用しています。コマンドラインの最後のライブラリとしてpthread
ライブラリを適切に含めましたが、これらの特定のシンボルはまだ解決されていません。
$ 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 pthread_mutexattr_settype@@GLIBC_2.1<br>
493: 00009d90 36 FUNC GLOBAL DEFAULT 13 pthread_mutexattr_settype
他のユーザーのフィードバックに基づいて役立つことがわかったので、コメントを回答として書くだけです。
-pthread
をコンパイラに渡してください(-l
なし)。 gcc-コンパイル時の-pthreadフラグの重要性 も参照してください。
Cmakeではaddset( CMAKE_CXX_FLAGS " -pthread " )
ができます
間隔を編集しないでください!