gpt4 book ai didi

gcc - 为什么在使用 -rpath 时需要 -L?

转载 作者:行者123 更新时间:2023-12-03 12:45:15 25 4
gpt4 key购买 nike

我发现-L使用 -rpath 时必须给出标志.例如:

gcc -o test test.o -L. -lmylib -Wl,-rpath=.

为什么是 -L需要国旗?编译时除了来自 h 文件的信息之外还需要什么信息?

如果我删除 -L .我收到以下消息:
gcc -o test test.o -lmylib -Wl,-rpath=.
/usr/bin/ld: cannot find -lmyLib

不过,删除这两个标志是完全可以的。像这样:
gcc -o test test.o -lmylib

前提是可以在 /usr/lib 中找到 libmyLib , 那是。为什么不是 -L现在需要吗?

这是 https://stackoverflow.com/a/8482308/1091780 的后续问题.

最佳答案

即使是动态库也需要一定程度的静态链接;链接器需要知道动态库应该提供哪些符号。关键区别在于动态库在运行时提供定义,而完全静态库在链接时提供定义。

为此,-L需要指定要链接的文件的位置,就像 -l指定特定的库。 .表示当前目录。
-rpath在运行时开始发挥作用,当应用程序尝试加载动态库时。当尝试加载动态库时,它会通知程序要搜索的附加位置。

原因-L/usr/lib不需要指定是因为链接器默认在那里查找(因为这是放置库的非常常见的地方)。

关于gcc - 为什么在使用 -rpath 时需要 -L?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28096133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com