12

次の問題があります。Ubuntu でプロジェクトをビルドしようとすると、これまでに次のリンカー エラーが発生します。

/usr/bin/ld:
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_thread.a(once.o): undefined reference to symbol 'pthread_once@@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO
missing from command line collect2: error: ld returned 1 exit status
make[2]: *** [sunprint] Error 1 make[1]: ***
[CMakeFiles/sunprint.dir/all] Error 2 make: *** [all] Error 2
*** Failure: Exit code 2 ***

ubuntu 13デスクトップ、GCC 4.8、ブーストバージョンで実行しています。は 1.54 です。私が使用している IDE は KDevelop です。必要に応じて、この問題に関する追加情報を提供できますが、現在、このリンクの問題で立ち往生しています。

何か案は?事前にサンクス。

4

2 に答える 2

13

add_definitionsプリプロセッサの入力を追加するだけで、コンパイラがビジネスを開始する前でも動作しており、実行可能ファイルのリンクからさらに遠く離れているため、ステップldは実行されているはずです。

リンク時の依存関係を解決したいldのは CMake コマンドtarget_link_librariesです。これは、特定のターゲットに対して、コンパイル後にリンクする多数のライブラリを追加します。

あなたの場合、適切な呼び出しは次のようになります

target_link_libraries(${PROJECT_NAME} [...] -lpthread [...]) #obviously without the '[...]' and the correct target name
于 2013-11-11T10:00:17.800 に答える