4

ubuntu-13.04 で、Linux ディストリビューションが提供する GCC-4.7.3 を使用して、共有ライブラリから実行可能ファイルをビルドするとエラーが発生しました。

問題は libpng と zlib の間にあると思います (前者は後者を使用します) が、その理由はわかりません。

まず、私のコマンドは次のとおりです。

$ gfortran -o test_muesli_config_fml test_muesli_config_fml.o -fopenmp 
-Wl,--rpath,/usr/local/lib/muesli /usr/local/lib/muesli/libfml.so -lstdc++
-Wl,--rpath,/usr/lib /usr/lib/liblapack.so -Wl,--rpath,/usr/lib /usr/lib/libblas.so
-lpng -lz -lpthread -lreadline -lhistory

次のエラーが発生します。

/usr/local/lib/muesli/libfml.so: undefined reference to `gzwrite'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzopen'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzclose'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzread'
collect2: error: ld returned 1 exit status

ただし、-lz存在することに注意してください。その後、--trace-symbol=より多くの情報を取得するためにリンカー オプションを追加しました。

$ gfortran -o test_muesli_config_fml test_muesli_config_fml.o -fopenmp 
-Wl,--rpath,/usr/local/lib/muesli /usr/local/lib/muesli/libfml.so -lstdc++
-Wl,--rpath,/usr/lib /usr/lib/liblapack.so -Wl,--rpath,/usr/lib /usr/lib/libblas.so
-lpng -lz -lpthread -lreadline -lhistory -Wl,--trace-symbol=gzwrite

結果は次のようになります。

/usr/local/lib/muesli/libfml.so: reference to gzwrite
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/libz.so: definition of gzwrite
/usr/local/lib/muesli/libfml.so: undefined reference to `gzwrite'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzopen'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzclose'
/usr/local/lib/muesli/libfml.so: undefined reference to `gzread'
collect2: error: ld returned 1 exit status

そう、gzwrite見つかったlibz.soが、リンカはそれを使用しない!

たまたま、オプションを削除しようと思ったの-lpngですが (実際には libpng ライブラリは使用されていません)、問題は解決しました! なんで?

次に、コード全体を別のバージョンの GCC-4.7.3 でコンパイルしました (自分でコンパイルしました。多くのバージョンのコンパイラをテストするのに慣れています-lpng) -lz

何か案が?

さらに、(libpng を使用する) 別のプログラムで別の試行を行うと、ビルドが成功します。

2013-10-08 編集

これは ubuntu-13.04 のバグであると確信しています: 他の 2 つの Linux ディストリビューション (Fedora 16 -- Ubuntu-10.04) を試しましたが、リンカーの動作は標準であり、上記の最初の部分で説明したものとは異なります。メッセージ。

この問題は、ubuntu コミュニティで報告する予定です。よろしく。

2013-10-09 に編集

バグはhttps://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1237270に報告されています

4

1 に答える 1