【发布时间】:2012-11-08 15:37:11
【问题描述】:
我正在尝试编译一个测试文件:
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'
我不知道这是什么意思。
【问题讨论】:
-
试试
export LD_LIBRARY_PATH=...。 -
请告知您使用的是哪个 gcc 版本。
-
版本是 gcc-4.4.6-4.el6.x86_64
-
看起来像一个路径问题。您能否提供此命令的输出:find / -name libg2c 2>/dev/null 这也可能有帮助:yum 提供 */libg2c.so
-
使用编译器特定库的路径更新您的
ld.so.conf可能是个好主意,这样您就不必为您编译的每个程序都弄乱 LD_*_PATH ...