1

我有许多链接到单个库路径的可执行文件。例如,可执行文件foo链接到 (say)libboost_system.solibfoo.so,后者是我自己构建的。我将第三方库放在一个变量LDLIBS中,并通过链接我的库-lfoo,因此 makefile 行如下所示:

foo: objects
    $(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS) -lfoo

然而,当我readelf,我看到了自己的道路!

$ readelf --dynamic foo 

Dynamic section at offset 0x3c68 contains 48 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [/home/username/foo_dir/lib/libfoo.so]
 0x0000000000000001 (NEEDED)             Shared library: [libboost_system.so.1.58.0]

我自己的库是唯一具有绝对路径的库。

我怎样才能摆脱这个怪物只使用makefile,即不使用patchelf --replace-neededor chrpath

4

0 回答 0