GNU链接器中-l和-L选项的顺序是否重要?

Aqu*_*irl 19 linker gcc ld binutils

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

问题:顺序顺序是否也与-L选项有关,就像-l wrt链接器一样?

这个链接:http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html没有多说-L的序列.

编辑 另外,

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

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

gcc -lm hello.c -Lx
Run Code Online (Sandbox Code Playgroud)

仍然首先给出用-L指定的目录?

Dmi*_*kov 16

是的,顺序-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
Run Code Online (Sandbox Code Playgroud)

等于这个

gcc -Lx -lm hello.c
Run Code Online (Sandbox Code Playgroud)

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

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

gcc hello.c -Lx -lm 
Run Code Online (Sandbox Code Playgroud)