2017-11-06 16 views
0

Lapackライブラリを使用してIntel Fortranによって1台のPCにコードのコピーをコンパイルしました。そして、別のPC(Lapackをインストールしていない同じOS)で実行しました。それは失敗した。Fortranコードを静的にコンパイルする方法

これは、他のPCにLapackをインストールすることで解決できます。他のライブラリを使用している場合も同じ問題が発生します。これは動的なコンパイルの問題のようです(わかりません)。私の質問は、どのマシンでも実行可能な実際の実行可能ファイルを取得する方法です。

+1

マニュアルを見て「静的」という言葉を探しましたか? 「静的」フラグを試しましたか?何か問題があったのですか?どのコンパイラにもありますか?コンパイラごとに異なります。 –

+0

私はifortを使用します。 "-static"を追加すると、 "ld:-lmを見つけることができません。 、ld:-lcが見つかりません。ld:-ldlが見つかりません。ld:-lcが見つかりません。それはどういう意味ですか? –

答えて

0

私は今かなり明確な答えを得ています。この問題への直接的な答えは(@Vladimir Fが& @Rossのように)gfortranとifortの両方に "-static"というオプションを使うというものです。

おそらく問題が発生した

静的コンパイルと動的コンパイルのためのライブラリは異なります。例えば、 "LIBNAME"というlibを既にインストールしているかもしれません。しかし、 "-static"オプションのバージョンには、 "LIBNAME-static"と同様のlibが必要です。

/usr/bin/ld: cannot find -lLIBNAME 

私たちがインストールする必要があるのは、libLIBNAMEです。また、必要に応じて

sudo dnf install libLIBNAME. 

そして

sudo dnf install libLIBNAME-static 

によって(例えばFedoraの)それをインストールすることができます。ただ試してみてください。

+0

この回答は役に立ちません。 "静的にコンパイルするには、' -static'フラグを使用します。あなたの他の問題は、コメントを渡す際にのみ言及されました。 – Ross

関連する問題