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

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

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

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

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Q&A

解決済

2回答

32972閲覧

make実行時のエラーの意味を理解したいです。

sgm

総合スコア9

CMake

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

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

0グッド

0クリップ

投稿2018/06/26 05:30

編集2018/06/26 05:35

前提・実現したいこと

make実行時のエラーの内容を理解したいです。
Gromacs-LSというソフトウェアをインストールしたいと思っています。
マニュアルによれば、解凍後、ccmake→make→make installという手順となっています。
ccmakeの使用が初めてで、make実行時のエラーが何を意味しているか理解したいです。

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

/usr/bin/ld: /usr/local/lib/libfftw3.a(apiplan.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libfftw3.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
src/mdlib/CMakeFiles/md.dir/build.make:1918: recipe for target 'src/mdlib/libmd_LS.so.6' failed
make[2]: *** [src/mdlib/libmd_LS.so.6] Error 1
CMakeFiles/Makefile2:1152: recipe for target 'src/mdlib/CMakeFiles/md.dir/all' failed
make[1]: *** [src/mdlib/CMakeFiles/md.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2

### 該当のソースコード ```ここに言語名を入力 ソースコード

試したこと

一つ目のエラーで"recompile with -fPIC"とあったので、ccmakeで該当箇所のオプションにfPICを追加して実行したところ、次のようなエラーが出力されました。
make[2]: *** No rule to make target '/usr/local/lib/libfftw3.a -fPIC', needed by 'src/mdlib/libmd_LS.so.6'.  Stop.

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ccmakeで該当箇所のオプションにfPICを追加して実行した

どこにどう追加されたか明らかになっていませんが、おそらく追加の仕方が間違っています。
そのため、'/usr/local/lib/libfftw3.a -fPIC'という名前のライブラリをビルドしようとして、そんなん知らん言われているのだと思います。


ソースのダウンロード先は、以下で間違いないでしょうか。
http://mdstress.org/index.php/downloads/

どのファイルのどこを修正したか、追記をお願いできますでしょうか。

投稿2018/06/26 05:57

編集2018/06/26 06:00
kazto

総合スコア7196

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

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

sgm

2018/06/26 06:16

回答ありがとうございます。 ダウンロード先はそちらで間違いありません。 GROMACS-LSのインストールにはFFTW3というソフトウェアが必要で、以下はFFTW3に関するccmakeの項目です。 FFTW3_INCLUDE_DIR /usr/local/include FFTW3_LIBRARIES /usr/local/lib/libfftw3.a -fPIC 二つ目の項目に-fPICを追加しました。 よろしくお願い致します。
kazto

2018/06/26 06:43

試しに手元でコンパイルしてみましたが、普通にfPICオプションなしでもコンパイル通っちゃいましたねぇ。。。 少なくとも、fPICオプションつけるなら、以下のようにした方が良いです。 $ make CFLAGS=-fPIC LDFLAGS=-fPIC
kazto

2018/06/26 06:43

つまり、CMakeFile.txtを修正するのではなく、make実行時にオプションを追加してコンパイルする感じです。
sgm

2018/06/26 08:35

返信ありがとうございます。 fPICオプションの付け方に関して、ありがとうございました。 一方、そのオプションで実行したところ同じエラー("recompile with -fPIC ...")が出ました。 それ以前の箇所で問題がありそうです。 LAPACKのconfigure, GROMACS-LSのconfigureの段階で警告が出ており、それが発端なのかもしれません(別途質問を投稿しますので、ご回答いただけると幸いです)。 >> 試しに手元でコンパイルしてみましたが、普通にfPICオプションなしでもコンパイル通っちゃいましたねぇ。。。 もしよろしければ、どのようにコンパイルされたか教えて頂けないでしょうか。 よろしくお願い致します。
kazto

2018/06/26 08:53

環境は、以下です。 $ uname -a Linux ubuntu-xenial 4.4.0-128-generic #154-Ubuntu SMP Fri May 25 14:15:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
kazto

2018/06/26 08:54

特にファイルを編集したりはしていません。
sgm

2018/06/26 09:26

ご返信ありがとうございます。 教えて頂いた手順にて、コンパイルすることができました。 ご丁寧にありがとうございました。 また機会があればお願い致します。
guest

0

-fPIC に対応するmake生成ルールがない、というエラーですんで、
早い話が、 -fPIC というオプションに対応していないってことですね

投稿2018/06/26 05:46

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問