LD_LIBRARY_PATH 被 GCC 忽略

meh*_*dad 3 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
Run Code Online (Sandbox Code Playgroud)

所以有什么问题???已LD_LIBRARY_PATH弃用???

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

gcc main.c -L/home/mehrdad/usr/lib -lfoo
Run Code Online (Sandbox Code Playgroud)

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

./a.out
Run Code Online (Sandbox Code Playgroud)

操作系统库加载器似乎尊重 LD_LIBRARY_PATH 但不是 GCC!

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

meh*_*dad 5

我错了!感谢Alexandre CDavid Schwartz

LD_LIBRARY_PATH 仅适用于加载程序(运行时)。

LIBRARY_PATH 根据文档,我需要的是:

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