GCC忽略LD_LIBRARY_PATH

时间:2017-11-03 23:41:30

标签: c linux gcc

根据文档,GCC在LD_LIBRARY_PATH中查找路径以链接共享库但是在我看来它似乎被忽略了!

echo $LD_LIBRARY_PATH - > :/home/mehrdad/usr/lib(因此LD_LIBRARY_PATH已设置)

我在" libfoo.so" /home/mehrdad/usr/lib但是: gcc main.c -lfoo返回错误:

/usr/bin/ld: cannot find -lfoo
collect2: error: ld returned 1 exit status

那么问题是什么?是LD_LIBRARY_PATH已弃用???!

但我可以成功链接显式命令:

gcc main.c -L/home/mehrdad/usr/lib -lfoo

我也可以通过以下方式成功执行a.out:

./a.out

似乎LD_LIBRARY_PATH受OS库加载器的尊重但不是GCC!

我的环境: 操作系统:CentOs 7 编译器:gcc(GCC)4.8.5 20150623(Red Hat 4.8.5-4)

1 个答案:

答案 0 :(得分:1)

我错了!感谢Alexandre CDavid Schwartz

LD_LIBRARY_PATH仅适用于loader(运行时)。

根据文档我需要

LIBRARY_PATH

  

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