根据文档,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)
答案 0 :(得分:1)
我错了!感谢Alexandre C
和David Schwartz
!
LD_LIBRARY_PATH
仅适用于loader(运行时)。
LIBRARY_PATH
:
LIBRARY_PATH的值是以冒号分隔的目录列表, 很像PATH。当配置为本机编译器时,GCC会尝试使用 搜索特殊链接器文件时指定的目录,如果 它无法使用GCC_EXEC_PREFIX找到它们。使用GCC链接也使用 搜索-l的普通库时这些目录 选项(但首先使用-L指定的目录)。