LIBRARY_PATH 环境变量未被 gcc 使用/读取
LIBRARY_PATH environment variable not being used / read with gcc
我的 LIBRARY_PATH 变量已导出,但我仍然必须将 -L 选项传递给 gcc 以便 link 到我的库。
如果我正确理解 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 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 响应所有用于配置和库的搜索路径。
我的 LIBRARY_PATH 变量已导出,但我仍然必须将 -L 选项传递给 gcc 以便 link 到我的库。
如果我正确理解 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 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 响应所有用于配置和库的搜索路径。