-l
选项告诉链接器搜索标准目录中的库。
使用-L
,我们可以指定自己的库目录进行搜索。
问题:顺序顺序是否也适用于-L
选项,就像链接器中-l
w.r.t一样?
此链接:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html对-L
的序列没有太多说明。
修改 另外,
命令中指定的目录 在默认值之前搜索行 目录
来自手册页(由Dmitry指出),这是否意味着即使我指定的顺序如下:
gcc -lm hello.c -Lx
首先会优先考虑用-L
指定的目录吗?
答案 0 :(得分:15)
是的,-L
选项的顺序很重要 - 就像-l
和-I
选项一样。
来自man ld
<强> -Lsearchdir 强>
的 - 库路径= searchdir 强>将路径searchdir添加到ld将搜索归档库和ld控制脚本的路径列表中。您可以多次使用此选项。将按照在命令行中指定目录的顺序搜索目录。在默认目录之前搜索命令行中指定的目录。无论选项出现的顺序如何,所有-L选项都适用于所有-l选项。
GCC documentations以及更具体的Linking Options对您有用
修改强>
对不起,我确实错过了查看你给出的链接。 “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