2
node-gyp
を使用してnode.js C++を構築しようとしていますが、ノードからロードしたときに見つかるように-Wl,-rpath,$ORIGIN
を指定する方法がわかりませんaddon.node
と同じディレクトリにある共有オブジェクトライブラリ。相対位置を持つ共有ライブラリに依存してnodejs C++ addonを構築する方法
私はこのように私のbinding.gyp
を設定しようとしている:
"libraries": [
"-L../../install_release_x64/",
"-llibppp"
],
"ldflags": [
"-Wl,-rpath,'$ORIGIN'"
],
"cflags_cc": [
"-fexceptions",
"-fPIC",
"-Wno-unknown-pragmas"
]
が、私は$ readelf -d addon.node
を実行すると、結果はこのようなものです:
Dynamic section at offset 0x7d10 contains 29 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [liblibppp.so]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000e (SONAME) Library soname: [addon.node]
0x000000000000000f (RPATH) Library rpath: [RIGIN]
0x000000000000000c (INIT) 0x37a0
期待される結果は何Library rpath: [$ORIGIN]
任意のアイデアですnode-gypは私の$ORIGIN
という特別なキーワードですか?
"ldflags": [
"-Wl,-rpath,'$$ORIGIN'"
],
期待のように今では動作します: