链接库时的默认目录上的GCC或G 路径搜索顺序
gcc or g++ path search order on default directories when linking libraries
我已经看过这篇文章,并了解到:
- 在默认目录之前搜索具有
-L
选项的命令行上指定的目录。 -
-L
中指定的目录按在命令行上指定的顺序搜索。
问题是:是否有默认目录的搜索顺序?
例如,如果我运行此命令:
$ gcc -Xlinker --verbose 2>/dev/null | grep SEARCH | sed 's/SEARCH_DIR("=?([^"]+)"); */1n/g' | grep -vE '^$'
(从本文中复制命令(
它在我的计算机中的/usr/lib
之前打印出/usr/local/lib
(Ubuntu 16.04,64位,GCC 5.4.0(。在这种情况下,会在/usr/lib
之前搜索/usr/local/lib
?
来自Binutils LD手动部分 3.4.2命令与文件打交道:
search_dir(路径(
search_dir命令将路径添加到LD寻找存档库的路径列表中。使用search_dir(路径(就像在命令行上使用``-l路径''(请参阅命令行选项(。如果两者都使用,则链接器将搜索两个路径。首先搜索使用命令行选项指定的路径。
所以,是的,因为默认目录是在默认链接器脚本中给出的使用此SEARCH_DIR()
命令,将以SEARCH_DIR()
命令的顺序搜索它们。
,例如,在我的mingw
安装中,默认的链接器脚本以此为启动:
/* Default linker script, for normal executables */
/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. */
OUTPUT_FORMAT(pei-i386)
SEARCH_DIR("=/mingw32/i686-w64-mingw32/lib");
SEARCH_DIR("=/mingw32/lib");
SEARCH_DIR("=/usr/local/lib");
SEARCH_DIR("=/lib");
SEARCH_DIR("=/usr/lib");
-> /usr/local/lib
中的库可以覆盖/lib
和/usr/lib
中的库,而不是mingw
本身提供的库。
相关文章:
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 按边长度递归搜索图中所有可行路径
- 将共享库的搜索路径更改为生成文件中提供的 rpath
- 添加 #include 的搜索路径
- 为什么"/usr/include"不在 GCC 默认搜索路径中
- 使用迭代深度优先搜索算法的未加权图的最短路径
- 如何从客户端为COM服务器设置dll搜索路径?
- 在makefile中设置GCC路径
- 链接库时的默认目录上的GCC或G 路径搜索顺序
- GCC Bug,使用尖括号通过宏包含标头时"linux"路径中的字符串"<>"替换为 "1"
- 包含标头中的搜索路径因编译器而异
- C/C++ 从根位置搜索文件夹并返回绝对路径
- 使用连接器 c++ 访问 MYSQL 数据库(如何将路径添加到我的标准搜索目录)
- 修改广度优先搜索算法以记住矩阵中的最短路径
- 对于具有绝对路径的库的GCC行为是什么?
- 运行 c++ 程序时搜索的路径错误
- 阻止 GCC 在包含搜索路径上搜索当前目录"-I-"选项
- OSX 运行时动态库路径搜索
- 如何在自己构建GCC后配置共享库搜索路径
- gcc和g++库搜索路径