質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

Ubuntuにて`libpthread_nonshared.a`が見つからない

NepUra
NepUra

総合スコア1

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

1回答

0グッド

0クリップ

332閲覧

投稿2022/11/12 04:19

前提

Ubuntu(22.04.1 LTS)マシンにgithubからFastChemをcloneしてきてcmakeでビルドしようとしています。

具体的には、公式のマニュアル(fastchem_manual.pdf)に従って、git cloneしてきたFastChem/ディレクトリの中にbuild/ディレクトリを作って、その中で

$ cmake -DUSE_PYTHON=ON .. $ make

としたところ、いくつかのライブラリが無いと怒られます。

そこで、以下のように該当するライブラリにシンボリックリンクを貼ったところ、これらのライブラリに関しては怒られなくなります。

$ sudo ln -s /usr/lib/x86_64-linux-gnu/libpthread.so.0 /lib/libpthread.so.0 $ sudo ln -s /usr/lib/x86_64-linux-gnu/libc_nonshared.a /usr/lib/libc_nonshared.a $ sudo ln -s /usr/lib/x86_64-linux-gnu/libc.so.6 /lib/libc.so.6 $ sudo ln -s /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /lib/ld-linux-x86-64.so.2

しかし/usr/lib/libpthread_nonshared.aだけは、findlocateで探しても私のマシン上に存在せず、困っております。

発生している問題・エラーメッセージ

$ make [ 46%] Built target fastchem_lib [ 48%] Linking CXX executable ../fastchem /usr/bin/ld: /usr/lib/libpthread_nonshared.a が見つかりません collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/fastchem.dir/build.make:107: ../fastchem] エラー 1 make[1]: *** [CMakeFiles/Makefile2:121: CMakeFiles/fastchem.dir/all] エラー 2 make: *** [Makefile:103: all] エラー 2

試したこと

(1) いくつかの過去の質問記事(例えば https://stackoverflow.com/questions/72248634/ )やhttps://packages.ubuntu.com/の検索結果などを参考に、libc6-devが問題のlibpthread_nonshared.aを含んでいると思ったため、

$ sudo apt --reinstall install libc6-dev

にて再インストールしましたが、libpthread_nonshared.aはやはり見当たりません。
(インストールだけではいけなくて何かその後に操作を行うことでライブラリが生成されたりするのでしょうか?不勉強なため阿呆なことをいっていたらすみません。)

(2) 無関係かもしれませんが、cmakeのバージョンが古いようだった(3.18.4-2ubuntu1)ので、

$ sudo apt purge cmake

にてパージした後、

$ pip install cmake

にて最新版(3.24.3)をインストールしました。

バージョン情報

$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.1 LTS Release: 22.04 Codename: jammy $ apt policy libc6-dev libc6-dev: インストールされているバージョン: 2.35-0ubuntu3.1 候補: 2.35-0ubuntu3.1 バージョンテーブル: *** 2.35-0ubuntu3.1 500 500 http://jp.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 100 /var/lib/dpkg/status 2.35-0ubuntu3 500 500 http://jp.archive.ubuntu.com/ubuntu jammy/main amd64 Packages $ cmake --version cmake version 3.24.3

以上です。
恐縮ながらライブラリについてあまりに無知で手詰まりな状況です。
何かヒントをいただけますと幸甚です。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jbpb0

2022/11/12 08:00

> Ubuntu(22.04.1 LTS) は、 https://askubuntu.com/questions/445487/what-debian-version-are-the-different-ubuntu-versions-based-on によると「bookworm」のようなので、 https://packages.debian.org/search?suite=bookworm&arch=any&mode=filename&searchon=contents&keywords=libpthread_nonshared で検索すると「libc6-dev」に入ってるようで、それ入れたら、 https://packages.debian.org/bookworm/amd64/libc6-dev/filelist によると「/usr/lib/x86_64-linux-gnu」にあるらしいのですが、そこにも無いのでしょうか? 無い場合ですが、 dpkg -L libc6-dev を実行したら表示されるファイルパス一覧は、 https://packages.debian.org/bookworm/amd64/libc6-dev/filelist と異なるのでしょうか? 参考 https://www.softel.co.jp/blogs/tech/archives/5868

回答1

0

自己解決

お二方ともコメントありがとうございます。
おっしゃる通り、Ubuntuの現行バージョンではlibpthread_nonshared.aがそもそも存在せず、つまりは必要ないようですね。
hoshi-takanori様のご指摘にあった「互換性のために Debian には空のライブラリが追加されてる」を参考に、空のファイルを当該パスに置いてみたところ解決しました。

$ sudo touch /usr/lib/libpthread_nonshared.a

簡単なことでしたが盲点でした、、どうもありがとうございます。

投稿2022/11/12 09:06

NepUra

総合スコア1

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CMake

CMakeはクロスプラットフォームで作動するオープンソースのビルドシステムです。コマンドライン又は組み込まれた開発環境で使うことができる元のmakefileとプロジェクトファイルを生成します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。