Node.js拡張子を作成するための単純なbinding.gypファイルがあります。ライブラリ「mylib」のリンク方法を変更し、共有ライブラリを使用する代わりに静的にリンクしたいと思います。
{
"targets": [
{
"target_name": "myext",
"sources": [
"code/main.cpp",
"code/load.cpp",
"include/load.h"
],
"include_dirs": [
"include", "../Library/include"
],
"libraries": [
"-lmylib", "-L/home/admin/MyLib/Library/binaries/linux/Release"
],
"cflags!": [ "-fno-exceptions" ],
"cflags": [ "-std=c++11" ],
"cflags_cc!": [ "-fno-exceptions" ]
}
]
}
Mylibの静的バージョンと共有バージョンは同じディレクトリにあります。
# ls /home/admin/MyLib/Library/binaries/linux/Release
libmylib.a libmylib.so
ライブラリのインストール/ロードの問題を回避するために、静的にリンクしたいと思います。
「ライブラリ」セクションに静的な.aまたは.soファイルのパスを追加するだけです。
"ライブラリ":["/ usr/local/lib/libnetfilter_queue.so.1.3.0"]
組み込み変数module_root_dir
を使用して、node-gypにパスを挿入させることができます。コードを正しく解釈した場合は、libraries
を次のように変更します。
"libraries": [
"-lmylib",
"-L<(module_root_dir)/../Library/binaries/linux/Release"
],
トリックをするかもしれません。 .a
または.so
バージョンとリンクするかどうかはわかりませんが、次のことを試すことができることを指定します。
"libraries": [
"<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a"
],
with out-L
プレフィックスと-lmylib
。さらに、ルートディレクトリの上をトラバースできるかどうかは少しわかりません。これまで、モジュールのルートディレクトリより上のものを使用してテストしたことはありません。それ以外は行ってもいいはずです。