編集 1:
以下のすべての参照は Ubuntu 用です。
libpthread-stubs0
という名前のパッケージ おそらく単なるスタブなので、pthread_create
はありません 関数。
これはありますか?
$ find /lib -name "*pthread*"
/lib/x86_64-linux-gnu/libpthread-2.15.so
/lib/x86_64-linux-gnu/libpthread.so.0
シンボル pthread_create
を確認します
$ nm /lib/x86_64-linux-gnu/libpthread.so.0 | grep "pthread_create"
0000000000008140 t __pthread_create_2_1
0000000000008140 T [email protected]@GLIBC_2.2.5
それでもうまくいかない場合は、pthread
の開発バージョンが必要になる場合があります。 libc6-dev
にあります . libpthread.so
を含むパッケージ コンテンツを検索できます。 http://packages.ubuntu.com/.
注:また、-lpthreads
で失敗しています . -lpthread
である必要があります 代わりに (s
なし) )?
編集 2
シンプルな CMakeLists.txt
を作成します 次のようにして cmake
を実行します .
cmake_minimum_required (VERSION 2.8.7)
find_package(Threads)
出力は何ですか? pthread
は見つかりますか ?
私の出力は次のとおりです:
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found.
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
cmakeの実行時に問題が発生していました。ただし、この場合、cmake は問題ではなく、エラーはサイレントであり、-lpthreads 関連のエラー/警告だけが cmake エラー ログ ファイルに書き込まれましたが、問題は発生していませんでした。最小限のバージョンを実行しました。 cmakelists.txt の内容を確認し、停止の原因となっているパッケージが見つかるまで、1 行ずつテストを開始しました。最終的に、バージョンの不一致であることがわかりました...
ヒント:実際のエラー メッセージを検索してください
通常、最後のエラー メッセージを探します。 しかし、このような場合にこの (しばしば役立つ) 戦略は道に迷います。
あなたが見ているのは CMakeCache.txt
です 、CMakeOutput.log
または CMakeError.log
. どうして? 構成フェーズのマクロまたはテストの一部が失敗すると、CMake はこれらのファイルを出力に「役立つように」ダンプします。残念ながら、これらのファイルは数千行の長さになる可能性があり、通常は多くの「*** Error: xyz"
」が含まれています。 さまざまな構成チェック用のエントリ。 「-lpthreads
」用のもの "たまたまログの最後のログだった...
解決策 :先頭からログをたどります 、構成チェックのあるセクションを特定し、最後の構成チェックを見つけます CMake が障害を識別し、そのログをダンプするポイントの前。テキスト「Configuring incomplete, errors occurred!
」を検索してみてください。 "
通常、そこには非常に正確な実際のエラー メッセージが表示されるか、少なくとも最後に呼び出されたマクロまたは関数の名前/パスが表示されます。これにより、実際に問題が発生した原因を特定できます。
Ubuntu 18.04.1 LTS では、このインストールで必要なすべてのファイルが提供されました。
apt -y install libboost-tools-dev libboost-thread1.62-dev magics++
/usr/lib/x86_64-linux-gnu/libpthread.a
/usr/lib/x86_64-linux-gnu/libpthread.so
/usr/lib/x86_64-linux-gnu/libpthread_nonshared.a
エラー「/usr/bin/ld:cannot find -lpthreads」はなくなりました