12

テストファイルをコンパイルしようとしています:

gcc -o test  test.c -lg2c

しかし、エラーが発生します:

/usr/bin/ld: cannot find -lg2c

私が使用する場合:

gcc -o test  test.c -L/usr/lib/gcc/x86_64-redhat-linux/3.4.6 -lg2c

その後、正常に動作します。

だから私はそのようにパスを追加しました:

LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/3.4.6:$LD_LIBRARY_PATH

そして私が使うとき$LD_LIBRARY_PATHそれはそこにリストされています、しかし:

gcc -o test  test.c -lg2c

それでも機能しません。同じエラーが発生します。理由がわかりません。

私はCentOS(2.6.32-279.9.1.el6.x86_64)を使用していますが、どんな助けでも大歓迎です。


編集:コンパイラバージョン:

rpm -qa | grep gcc

gcc-4.4.6-4.el6.x86_64
compat-gcc-34-g77-3.4.6-19.el6.x86_64
libgcc-4.4.6-4.el6.x86_64
compat-gcc-34-3.4.6-19.el6.x86_64
gcc-gfortran-4.4.6-4.el6.x86_64
libgcc-4.4.6-4.el6.i686
gcc-c++-4.4.6-4.el6.x86_64

編集LIBRARY_PATH代わりに使用してみましたが、別のエラーが発生します:

gcc: spec failure: unrecognized spec option 'M'

それが何を意味するのか分かりません。

4

3 に答える 3

22

LIBRARY_PATHの代わりに、を設定してみてくださいLD_LIBRARY_PATH

gccマニュアルページから:

LIBRARY_PATH

LIBRARY_PATHの値は、PATHと同様に、コロンで区切られたディレクトリのリストです。ネイティブコンパイラとして設定されている場合、GCCは、GCC_EXEC_PREFIXを使用してそれらを見つけることができない場合、特別なリンカーファイルを検索するときにこのように指定されたディレクトリを試行します。GCCを使用したリンクでは、通常のライブラリで-lオプションを検索するときにもこれらのディレクトリが使用されます(ただし、-Lで指定されたディレクトリが最初になります)。

于 2012-11-08T15:43:34.690 に答える
2

LD_LIBRARY_PATH変更後は必ずエクスポートしてください。そうしないと、GCCは変更されたバージョンを見ることができません。

LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/3.4.6:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
gcc -o test test.c -lg2c
于 2012-11-08T16:01:50.287 に答える
0

(ルートディレクトリではなく)ホームディレクトリ内に新しいフォルダを作成します。-lg2cfromに関連付けられている必要なすべてのライブラリ/usr/lib/gcc/x86_64-redhat-linux/3.4.6をこのフォルダにコピーします。

bashプロファイルのパスをこの新しいフォルダーに設定します。

私もこの問題を抱えており、この回避策で解決します。おそらく私たちは(root以外のユーザーとして)必要なアクセス/権利を持っていません/usr/lib/gcc/x86_64-redhat-linux/3.4.6

于 2019-12-18T01:42:26.057 に答える