2013-07-11 25 views
10

私が配布したいFortranプログラムがありますので、gfortranライブラリに静的にリンクしたいと思います。OSXのgfortranライブラリで静的にリンクする正しい方法

私は以下のフラグを使用してプログラムをコンパイルした場合:

gfortran -o myprog -static-libgfortran -static-libgcc myprog.f 

コマンドotoolはなくlibquadmath、それは静的gofrtranライブラリのほとんどにリンクされている私に語った:

otool -L myprog 

/usr/local/gfortran/lib/libquadmath.0.dylib (compatibility version 1.0.0, current v 
     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0) 

静的libquadmathがありますライブラリ/usr/local/gfortran/lib/libquadmath.aしかし、私はいつも、完全な静的リンク(これはOSXでサポートされていません)またはlibquadmathへのダイナミックリンクのいずれかで結ばれたすべてのリンク行を試しました。

私は、/ usr/local/gfortran/lib /からlibquadmath.0.dylibとlibquadmath.dylibを削除して、必要なものを作成することができました。その後、リンカーは静的ライブラリを取得します。

しかし、これはややこしいというほどややこしいようです。

誰もがこれを行うよりエレガントな方法を提案できますか?

ありがとうございます!

答えて

0

私はこれが非常に古いトラッカーであることは知っていますが、誰かが依然として動作するソリューションに興味を持っている可能性があります。その後

gfortran -c -o fort_sample.o fort_sample.f90 

、リンクのものあなたはそれを

./fort_sample 
Hello 
を実行することができ

ld -o ./fort_sample -no_compact_unwind \ 
-arch x86_64 -macosx_version_min 10.12.0 \ 
-lSystem \ 
/usr/local/gfortran/lib/libgfortran.a \ 
/usr/local/gfortran/lib/libquadmath.a \ 
/usr/local/gfortran/lib/gcc/x86_64-apple-darwin16/6.3.0/libgcc.a \ 
fort_sample.o 

:、ものをコンパイル

! fort_sample.f90 
program main 
    write (*,*) 'Hello' 
    stop 
end 

まず:

のは、我々は、コードを持っているとしましょう

あなたはそのquadmathに気づくことができますが、私は、これはあなたが最初の場所で探していたものです推測もはや存在

> otool -L fort_sample 
fort_sample: 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.51.1) 

ではありません。 dylibを取り外すことはできません。シンボリックリンクなどはありません。

関連する問題