我有许多可执行文件链接到单个lib路径。例如,可执行文件foo
链接(例如)libboost_system.so
和libfoo.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-needed
或chrpath
?