gpt4 book ai didi

c++ - 在编译和运行时之间发生变化时如何解析共享库位置?

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:54 25 4
gpt4 key购买 nike

我有以下内容:

g++ $(LD_OPTS) -o lib/foo.so lib/bar.o lib/qaz.o ../path/to/foodependency.so

It 和 foo 都在这里构建(假设 foodependency 之前已经由 makefile 构建)。在构建过程中,最终结果看起来像这样:

project
---libFoo
------lib
---------foo.so
---libFooDependency
------lib
---------foodependency.so

但是,在运行时,foo.so 和 foodependency.so 都在同一个目录中,bar:

bar
---foo.so
---foodependency.so

此布局在运行时无法更改。但现在作为结果,ldd foo.so 返回以下内容:../path/to/foodependency.so => 未找到

我该如何解决这个差异?

最佳答案

How can I resolve this

有几种方法。

  1. foodependency.so重命名为libfoodependency.so,链接时使用-L../path/to -lfoodependency,或者
  2. 链接时使用-L../path/to -l:foodependency.so,或者
  3. 链接 foodependency.so 时,添加 -Wl,--soname=foodependency.so 并使用您的原始链接行。

关于c++ - 在编译和运行时之间发生变化时如何解析共享库位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554217/

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