c - gcc 未使用/读取 LIBRARY_PATH 环境变量

标签 c gcc fedora

我的 LIBRARY_PATH 变量已导出,但我仍然必须将 -L 选项传递给 gcc 才能链接到我的库。

如果我正确理解 GCC 文档 3.20 Environment Variables Affecting GCC ,应该查看 LIBRARY_PATH 环境变量,以便我只需指定 -l 选项。

当我运行时

gcc -Wall cog.c -L$HOME/lib -lutil

程序已编译,并且我按预期得到了 a.out。

如果我运行

gcc -Wall cog.c -lutil

我收到 undefined reference 错误。

据我所知,我已经正确导出了环境变量。

cassiopeia~> export LIBRARY_PATH=$HOME/lib
cassiopeia~> ls $LIBRARY_PATH 
libutil.a

有什么线索吗?

就其值(value)而言,我使用的是 Fedora 23 64 位和 gcc 版本 5.3.1 20160406 (Red Hat 5.3.1-6)。

最佳答案

您的发行版可能支持多库。如果是这种情况,则库的所有路径字符串都会随该计算机的体系结构(通常为 32 位或 64 位)进行扩展。因此,如果您指定

$HOME/lib

作为您的搜索路径,multilib 可能会将其扩展为

$HOME/lib/x86_64-linux/4.6

$HOME/lib/x86_32-linux/4.6

您可以通过调用一次 gcc 来检查是否是这种情况

gcc --print-search-dirs

这使得 gcc 响应用于配置和库的所有搜索路径。

关于c - gcc 未使用/读取 LIBRARY_PATH 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38172362/

相关文章:

c++ - 检查 C 中 int 和 float 之间的相等性

c - fprintf,错误 : format not a string literal and no format arguments [-Werror=format-security

c++11 to_string 与 code::blocks -std=c++11 flag already selected

linux - 将文件/设置保存在实时 USB 上

c - 何时使用以及何时读取输入

c - 一次使用 malloc 和在较小大小的 block 上多次调用它时使用的内存大小的差异

c - 带有 aapcs 的 GCC 内联汇编

c - 执行快速排序时使用 GCC 编译器在 C 中出现段错误

linux - 'freehep-graphics2d' 的 Fedora 等效包名称是什么?

c - 为什么我在这里遇到段错误 (C)