LD_LIBRARY_PATH似乎不起作用

时间:2012-11-08 15:37:11

标签: linux gcc centos gnu

我正在尝试编译测试文件:

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'

我不知道这意味着什么。

3 个答案:

答案 0 :(得分:13)

尝试设置LIBRARY_PATH,而不是LD_LIBRARY_PATH

来自gcc手册页:

  

LIBRARY_PATH

     

LIBRARY_PATH的值是以冒号分隔的目录列表,   很像PATH。当配置为本机编译器时,GCC会尝试使用   搜索特殊链接器文件时指定的目录,如果   它无法使用GCC_EXEC_PREFIX找到它们。使用GCC链接也使用   搜索-l的普通库时这些目录   选项(但首先使用-L指定的目录)。

答案 1 :(得分:3)

确保在修改后导出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

答案 2 :(得分:0)

在您的主目录(不是根目录!)中创建一个新文件夹。 将与-lg2c关联的所有必需库从/usr/lib/gcc/x86_64-redhat-linux/3.4.6复制到此文件夹。

将bash个人资料中的路径设置为此新文件夹。

我也遇到了这个问题,并通过此变通办法解决了。 也许我们(作为非root用户)没有对/usr/lib/gcc/x86_64-redhat-linux/3.4.6

的必要访问/权限