20

-l选项告诉链接器搜索标准目录中的库。并且-L,我们可以指定我们自己的库目录进行搜索。

问题:顺序的顺序对-L选项也很重要,就像-l链接器一样?

这个链接:http ://gcc.gnu.org/onlinedocs/gcc/Link-Options.html没有说太多关于-L.

编辑 另外,

在默认目录之前搜索命令行上指定的目录

来自手册页(正如 Dmitry 所指出的那样),这是否意味着即使我指定了如下顺序:

gcc -lm hello.c -Lx

仍然-L会优先考虑指定的目录吗?

4

1 回答 1

17

是的,-L选项的顺序很重要——就像-l-I选项一样。

man ld

-Lsearchdir
--library-path=searchdir

将路径 searchdir 添加到 ld 将搜索归档库和 ld 控制脚本的路径列表中。您可以多次使用此选项。目录按照在命令行中指定的顺序进行搜索。在默认目录之前搜索命令行上指定的目录。所有 -L 选项都适用于所有 -l 选项,无论选项出现的顺序如何。

GCC 文档,更具体地说,链接选项将对您有用

编辑
对不起,我确实错过了检查您提供的链接。“man ld”可以写在控制台中。

Edit2我在选项之前
做了一个简单的测试,与之前相比没有区别-l-L-L-l

所以回答你的第二个问题,这个

gcc -lm hello.c -Lx

等于这个

gcc -Lx -lm hello.c

在两个测试中,首先在目录 x/ 中搜索 libm。

请注意,尽管将源文件放在-l<lib>源文件之前是一种不好的做法,但在链接时可能会导致未定义的引用。这是正确的方法

gcc hello.c -Lx -lm 
于 2011-04-28T10:40:37.223 回答