gpt4 book ai didi

c - 有关 "-Wl,-rpath=."的信息

转载 作者:行者123 更新时间:2023-11-30 17:34:33 25 4
gpt4 key购买 nike

我已经构建了一个共享库libC.so,它依赖于libA.so和libB.so。然后我通过命令使用 libC.so 构建 test.c:

gcc test.c -o test -fPIC -I./ -L./ -lC

会输出错误,找不到libA.so和libB.so中的某些符号。我知道,当我添加标志“-lA -lB”时,tt 可以成功构建。

但是我不明白,为什么通过以下命令可以成功构建:

gcc test.c -o test -fPIC -I./ -L./ -lC -Wl,-rpath=.

最佳答案

我认为您的 libA.so 和 libB.so 存在于当前目录中。您提供链接选项 -Wl -rpath 作为当前目录。因此,您的链接器获取当前目录中的库并链接符号。

由于您指定的链接器选项,它不会给出任何错误。

您可能会遇到的下一个疑问是,我只指定了要搜索的目录,但没有指定库。链接器如何获取 libA.so 和 libB.so 库?但是链接器是智能的,它认为您忘记了包含这些相互依赖的库(您可能不知道相互依赖),但您已经指定了搜索所有依赖库的路径。因此它选择相互依赖的库。

我认为它只适用于相互依赖。我认为所有直接库都应该使用 -l 选项指定。

关于c - 有关 "-Wl,-rpath=."的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23288729/

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