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

时间:2016-07-03 17:10:36

标签: 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

我收到一个未定义的引用错误。

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

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

任何线索?

为了它的价值,我使用Fedora 23 64bit和gcc版本5.3.1 20160406(Red Hat 5.3.1-6)。

1 个答案:

答案 0 :(得分:3)

你的发行版可能是支持multilib的。如果是这种情况,则使用此计算机的体系结构(通常为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响应所有用于配置和库的搜索路径。