当我构建binutils时,ldscripts文件夹包含ld使用的几个文件,用于确定如何链接特定平台的对象。在脚本中,我看到如下行:
SEARCH_DIR("/Volumes/CaseSensitive/Developer/XCF/x86_64-pc-linux-gnu/gcc47/x86_64-pc-linux-gnu/lib64");
SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
" ="的含义/目的是什么?出现在SEARCH_DIR命令中?
根据http://www.sourceware.org/binutils/docs-2.12/ld.info/File-Commands.html的文件,
SEARCH_DIR命令将路径添加到ld查找归档库的路径列表。使用SEARCH_DIR(路径)与在命令行上使用-L路径完全相同(请参阅命令行选项)。如果两者都使用,则链接器将搜索两个路径。首先搜索使用命令行选项指定的路径。
并且,根据命令行选项:
将路径searchdir添加到ld将搜索归档库和ld控制脚本的路径列表中。您可以多次使用此选项。将按照在命令行中指定目录的顺序搜索目录。在默认目录之前搜索命令行中指定的目录。无论选项出现的顺序如何,所有-L选项都适用于所有-l选项。 搜索的默认路径集(未指定-L)取决于ld使用的仿真模式,在某些情况下还取决于其配置方式。见环境。 也可以使用SEARCH_DIR命令在链接脚本中指定路径。在链接器脚本出现在命令行中的位置搜索以这种方式指定的目录。
但是它没有说明" ="的含义/目的。我的目录结构中的所有文件夹都不以" ="开头。标志,所以它必须具有一些无证的意义。
非常感谢任何帮助。
谢谢, 凯文
答案 0 :(得分:0)
=使用sysroot的路径前缀。如果不是,则简单地删除=。
你正在看的文件非常古老。如果您查阅最新的[1],它会清楚地记录这种行为:
-L searchdir
--library路径= searchdir
...
如果searchdir以=开头,那么=将被sysroot前缀替换,由`--sysroot'选项控制,或者在配置链接器时指定。 ...
也可以使用SEARCH_DIR命令在链接脚本中指定路径。在链接描述文件出现在命令行中的位置搜索以这种方式指定的目录。