绝对路径如何进入可执行文件动态部分的“NEEDED”部分?

时间:2015-04-12 20:35:28

标签: linux makefile elf readelf

我有许多可执行文件链接到单个lib路径。例如,可执行文件foo链接(例如)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/nthompson/foo_dir/lib/libfoo.so]
 0x0000000000000001 (NEEDED)             Shared library: [libboost_system.so.1.58.0]

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

如何仅使用makefile消除这种怪物,即不使用patchelf --replace-neededchrpath

0 个答案:

没有答案