3

私のシステム管理者は最近、新しいバージョンのGCCを/lusr/opt/gcc-4.4.3にインストールしました。私はそれを次のようにテストしました:

mike@canon:~$ cat test.c
int main(){
  return 0;
}
mike@canon:~$ gcc test.c
/lusr/opt/gcc-4.4.3/libexec/gcc/i686-pc-linux-gnu/4.4.3/cc1: error while loading shared libraries: libmpfr.so.1: cannot open shared object file: No such file or directory

これについて私のシステム管理者に通知した後、彼は/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib私のに追加すると言いましたLD_LIBRARY_PATH。これを行った後、次のエラーが発生します。

mike@canon:~$ gcc test.c
cc1: error: unrecognized command line option "-L/lusr/opt/mpfr-2.4.2/lib"

まず、私のシステム管理者は、これが最善の回避策であると完全に確信していませんでした(彼はそれが彼のために働いたと言っていましたが...)、より良い解決策はありますか?

次に、からリンカーエラーが発生するのはなぜccですか。また、どうすれば修正できますか?

役立つかもしれないいくつかの情報:

mike@canon:~$ env | grep mpfr
OLDPWD=/lusr/opt/mpfr-2.4.2/lib
LD_LIBRARY_PATH=/lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib:

mike@canon:~$ echo $LDFLAGS

(the above is a blank line)
4

2 に答える 2

1

システム管理者は、GMP および MPFR ライブラリをビルド マシンからマシンの同じ場所にインストールする必要があることをお勧めします。(MPCライブラリも必要になる場合があります。)または、システム管理者はGCCの再構築をインストールする必要があります-できればバージョン4.5.2が(AFAIK)最新であるため-GMPおよびMPFRライブラリがどこにあるかの正しい設定でマシンにインストールされます。

GCC を使用するために LD_LIBRARY_PATH を設定する必要はありません。そうする必要がある場合は、それが実行されているマシン用にビルドされていないことを示しています。主要なライブラリがありません。

デバッグをさらに進めるには、おそらく次を使用する必要があります。

gcc -v test.c

これにより、実行されたコマンドラインが表示されます。-Lオプション (プログラムのリンク方法に影響を与える) をフェーズ 1 コンパイラーに渡す必要はありません。

于 2011-01-23T20:19:54.993 に答える
0

これは、gcc によるバグのある引数解析のように見えます ( -L fooについて文句を言うべきではありません)。

設定してみるか

LD_LIBRARY_PATH=\ /lusr/opt/mpfr-2.4.2/lib:/lusr/opt/gmp-4.3.2/lib

そのmpfrライブラリパスの前に先頭のスペースがあるように?

于 2010-02-12T15:16:01.013 に答える