2017-06-28 6 views
0

私はアドオン++ cmakeの-jsから使用してノードCをコンパイルしています。私は私のCコードで参照している動的ライブラリがあります。私:ノードC++アドオンで動的ライブラリをどのように展開しますか?

*src 
MyAddon.cpp 
*foo 
    *include 
    *lib 
    *linux64 
    libfoo.so 

コンパイルは問題ありません。私はそれが実行時にリンクすることができるような方法で展開されているlibfoo.so確保するにはどうすればよい

を実行すると、私はエラーを取得しますか? package.json内のファイルに追加

、動作しません。 package.jsonでLD_LIBRARY_PATHを設定できますか?

答えて

1

だからこれを働きました。トリックはRPATHが正しく設定されたことを確認した(問題が展開されたときに、それがローカルではなく動作しますので、RPATHは、デフォルトでは、絶対パスに設定されているということでした)。

あなたは.nodeファイルのファイル上でreadelfが実行するときは、これを見ることができます:

readelf -d build/Release/addon.node 

はこのような何かを返します。

set( CMAKE_SKIP_RPATH on) 
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-rpath,foo/lib") 

その後env.processを設定することにより、使用して正しく設定された実行時のLD_LIBRARY_PATHで確認してください。絶対パス

Dynamic section at offset 0x2fd9d30 contains 31 entries: 
    . 
    . 
    0x000000000000000f (RPATH)    Library rpath: [/home/user/foobartest/foo/lib] 

私は見つけることができるこの問題を解決する唯一の方法(注)CMakeのファイルでこれを行うことでした.LD_LIBRARY_PATH。

関連する問題