我有以下内容:
g++ $(LD_OPTS) -o lib/foo.so lib/bar.o lib/qaz.o ../path/to/foodependency.so
它和foo
都在这里构建(假设先前已经由makefile构建了foodependency)。在构建期间,最终结果看起来像这样:
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 => not found
如何解决这种差异?
答案 0 :(得分:1)
如何解决此问题
有几种方法。
foodependency.so
重命名为libfoodependency.so
,并在链接时使用-L../path/to -lfoodependency
,或-L../path/to -l:foodependency.so
或foodependency.so
时,请添加-Wl,--soname=foodependency.so
并使用原始链接行。