移植性の理由から、gfortranを使用して共有ライブラリを作成し、静的バージョンのlibgfortranとリンクさせたいと思います。残念ながら、私はさまざまなオブジェクトを適切にリンクすることができません。同様の問題に対処する投稿をすでにいくつか見つけましたが、問題を解決する方法がわかりませんでした。
私のソースファイルはすべて-fPIC
フラグを付けてコンパイルされています。-shared
オブジェクトをフラグとにリンクしようとすると-static-libgfortran
、次のエラーメッセージが表示されます。
gfortran -shared -static-libgfortran file1.o file2.o file3.o -o "mynewlib.so"
/usr/bin/ld: ../lib64/libgfortran.a(error.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
../lib64/libgfortran.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
サーバー上で最初からコンパイルしたgfortran4.6.3を使用しています。インストールはスムーズに実行され、標準構成は変更しませんでした。古い投稿で、コンパイラをで構成する必要があることがわかりました--with-pic
が、このフラグはGCCマニュアルに記載されていません。
問題はコンパイラーに起因するのでしょうか、それとも異なるオブジェクトをリンクしようとしている方法に起因するのでしょうか?どうすればこれを修正できますか?
よろしくお願いします!