GNU/Linux >> Linux の 問題 >  >> Linux

cmake を使用したビルド エラー:-lpthreads が見つかりません

編集 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」はなくなりました


Linux
  1. 有効なbaseurlが見つかりません:YumRepoエラー[解決済み]

  2. Python.hをコンパイルできません–Websockifyのインストールエラー

  3. phpize設定エラー:ソースが見つかりません(config.m4)

  1. エラーOpenSSLの[PHPExtensionmysqlnd]が見つかりません

  2. pspellが見つかりません–PHP構成エラーを修正します

  3. MySQLでパスワードによってIDENTIFIEDでGRANTを使用中にエラーが発生しました

  1. 検索を使用して複数のファイルの名前を変更するにはどうすればよいですか?

  2. ld が既存のライブラリを見つけることができません

  3. libcrypto ライブラリ エラーが見つかりません