GNU 链接器中 -l 和 -L 选项的顺序重要吗?
-l
选项告诉链接器在标准目录中搜索库。 并且通过-L
,我们可以指定自己的库目录进行搜索。
问题:顺序对于 -L
选项是否也很重要,就像对于链接器的 -l
一样?
此链接: http://gcc.gnu.org/onlinedocs/gcc/Link -Options.html 没有过多说明 -L
的顺序。
编辑 还,
命令中指定的目录 在默认值之前搜索行 目录
来自手册页(正如 Dmitry 所指出的),这是否意味着即使我指定如下顺序:
gcc -lm hello.c -Lx
仍然会首先优先考虑使用 -L
指定的目录?
The -l
option tells the linker to search the libraries in the standard dirs.
And with -L
, we can specify our own library directories for searching.
Question: Does the sequence of order matters for the -L
option too, like it does for the -l
w.r.t the linker?
This link: http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html doesn't say much about the sequence of -L
.
EDIT
Also,
Directories specified on the command
line are searched before the default
directories
is from the man page (as pointed by Dmitry), does this mean that even if I specify the order like:
gcc -lm hello.c -Lx
still the directory specified with -L
will be given preference first?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,
-L
选项的顺序很重要 - 就像-l
和-I
选项一样。来自
man ld
GCC 文档,更具体地说 链接选项将对您有用编辑
抱歉,我确实错过了检查您提供的链接。 “man ld”可以在控制台中写入。
编辑2
我做了一个简单的测试,将
-l
放在-L
选项之前,与-L
放在-l
之前相比,没有什么区别所以回答你的第二个问题,这
等于
在两个测试中首先在目录 x/ 中搜索这个 libm。
请注意,尽管将
-l
放在源文件之前是一种不好的做法,但这可能会导致链接时出现未定义的引用。这是正确的方法Yes, the order of
-L
options matters - just like-l
and-I
options.From
man ld
GCC documentations and more specifically Linking Options will be useful for youEdit
Sorry, indeed I missed to check the link you've given. "man ld" can just be written in the console.
Edit2
I made a simple test putting
-l
before-L
options and it shows no difference comparing to-L
before-l
So answering your second question, this
is equal to this
libm is searched first in directory x/ in both tests.
Note though that putting
-l<lib>
before source files is a bad practice, that may lead to undefined references when linking. This is the correct way