単一の lib パスにリンクする実行可能ファイルが多数あります。たとえば、実行可能ファイルは (たとえば)とにfoo
リンクしています。後者は私が自分で作成したものです。サード パーティのライブラリを変数に配置し、ライブラリを 経由でリンクすると、makefile の行は次のようになります。libboost_system.so
libfoo.so
LDLIBS
-lfoo
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]
私自身のライブラリは、絶対パスを持つ唯一のライブラリです。
patchelf --replace-needed
makefile のみを使用して、つまりorを使用せずに、この怪物を取り除くにはどうすればよいchrpath
ですか?