gpt4 book ai didi

c++ - 使用绝对路径指定库的 GCC 行为是什么

转载 作者:行者123 更新时间:2023-11-28 04:52:01 24 4
gpt4 key购买 nike

GCC(链接)在用绝对路径指定时无法找到库。请注意,我想要这个的原因是我有一个构建系统,它使所有库都通过绝对路径解析,因此它可以保留一组有序的唯一条目。

g++ (...) -l/path/to/library.so

我看到一个错误报告,其中一些人认为这是一个错误,而另一些人则认为它曾经有效的事实是一个错误,并且已修复。

有一些讨论认为必须在路径之前加上“:”

无论如何都没有成功。

因此,为了在构建系统中进行测试,我将代码放入以截断绝对库路径,如果它的“前缀”与指定给 GCC 的任何库路径匹配并截断绝对库路径。

g++ (...) -L/path/to -llibrary.so

这成功了。
我也试过这个。

g++ (...) -L/path/to -l/path/to/library.so

它奏效了。 9(虽然调查..看起来这是构建脚本中的错误)

如果为 GCC 指定的任何搜索路径是用绝对路径指定的库的“前缀”,它似乎可能会找到该库。我还假设它在所提供的库路径的有序列表中首先命中。

所以我的问题。

  • 这是受支持的行为吗?
  • 在构建脚本中截断绝对库路径或传入绝对路径是否更好。

我注意到这里提出了一些相关问题:

How to link using GCC without -l nor hardcoding path for a library that does not follow the libNAME.so naming convention?

这表示“未搜索”的完整路径被“嵌入”到可执行文件中,从而在执行时覆盖任何运行时库路径?它是否正确 ?如果是这样,则意味着在命令行中使用完整路径指定库是不合适的。在部署时,构建的应用程序和关联的库将安装在标准的可搜索位置。

最佳答案

我会说在这种情况下不要使用 -l,只需将完整的库路径作为命令的一部分传递: gcc(其他选项)/path/to/library.so

关于c++ - 使用绝对路径指定库的 GCC 行为是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997060/

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