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

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

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

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Ubuntu

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

16477閲覧

静的リンク(-static)をつけてのコンパイルのエラーについて

ahill

総合スコア17

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Ubuntu

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2016/05/18 06:42

編集2016/05/18 06:51

ubuntuでopenmpiを使い並列計算用のコード(hogehoge.cpp)を、静的ライブラリオプション-staticをつけてコンパイルしたいと思っています。

staticオプションなしではコンパイルは通ります.
しかし,以下のように-staticをつけ、

mpicxx \ -static -Ofast -fopenmp -std=c++11 -fpermissive \ -I../../include -I../../tools/external/voro++/src -I/usr/include/mpi -I/usr/include \ hogehoge.cpp -o hogehoge \ -L../../lib -L/usr/lib -L/usr/lib/opnmpi/lib \ -lfftw3 -lgomp -lm

コンパイルすると、

/usr/bin/ld: -lmpi_cxx が見つかりません /usr/bin/ld: -lmpi が見つかりません

と出力されます。

以下のリンク先の英語のサイト
”ld - "cannot find -lmpi*" when compiling openmpi code - Ask Ubuntu”
でもよく似た質問があり、このときはstaticを外せば解決としていますが、私の場合はstaticを外せられません。

また、リンク先でもあるように、lmpiのLD_LIBRALY_PATHを設定しても、うまくいきません。
libmpi.so、libmpi_cxx.so以外の他のライブラリ(-lfftw3, -lm等)にはエラーは出ず、lmpiとlmpi_cxxでエラーが出ます。

staticをつけて、最初に書いたmpicxxでコンパイルが通るようにする方法、またはリンク先の英語サイトの人がstaticでコンパイルできるやりかたを教えていただけないでしょうか。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

その現象の場合、OpenMPIのstaticライブラリがビルドされていないように思います。
OpenMPIを使ったことはないのですが、検索するとGithubのOpenMPIリポジトリが出てきました。ここの中央付近に"INSTALLATION OPTIONS"という項目があります。
ここを見ると、OpenMPIはデフォルトでは共有ライブラリのみビルドされるようです。
--disable-shared--enable-staticの両方を付けてOpenMPIをビルドすれば、staticライブラリのみがビルドされるようです。
OpenMPIをstaticライブラリとしてビルド後にahillさんのプログラムとリンクすれば良いように思います。

投稿2016/05/18 07:06

Chironian

総合スコア23272

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問