【问题标题】:LD_LIBRARY_PATH doesn't seem to workLD_LIBRARY_PATH 似乎不起作用
【发布时间】: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 ...

标签: linux gcc centos gnu


【解决方案1】:

尝试设置LIBRARY_PATH,而不是LD_LIBRARY_PATH

来自gcc 手册页:

LIBRARY_PATH

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

【讨论】:

  • 好的,我试过了,但现在我得到了:gcc: spec failure: unrecognized spec option 'M' gcc: spec failure: unrecognized spec option 'M'跨度>
  • 谢谢,这似乎已经做到了,规范错误原来是无关的。
  • 嗨 Lefti,我实际上没有 LIBRARY_PATH 问题,而是“无关”规范失败(在 gcc 4.7.2 上)。你是怎么解决这个问题的?
【解决方案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

【讨论】:

  • 感谢您的回复,我已经这样做了,但错误是一样的。
【解决方案3】:

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

将 bash 配置文件中的路径设置为这个新文件夹。

我也遇到了这个问题,用这个解决方法解决了。 也许我们(作为非root用户)没有/usr/lib/gcc/x86_64-redhat-linux/3.4.6的必要访问/权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-29
    • 2016-02-01
    • 2020-09-23
    • 2010-12-05
    • 2011-06-14
    • 2015-01-10
    • 2016-02-24
    • 2011-01-18
    相关资源
    最近更新 更多