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

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

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

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

Ubuntu

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

Q&A

解決済

1回答

2238閲覧

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

NepUra

総合スコア1

CMake

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

Ubuntu

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

0グッド

0クリップ

投稿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

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

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
guest

回答1

0

自己解決

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

$ sudo touch /usr/lib/libpthread_nonshared.a

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

投稿2022/11/12 09:06

NepUra

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問