Ответ 1
Просто добавьте путь к статическому файлу .a или .so в разделе "libraries",
"libraries": [ "/usr/local/lib/libnetfilter_queue.so.1.3.0" ]
У меня есть простой файл binding.gyp для создания моего расширения node.js. Я хочу изменить метод связывания библиотеки "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 в разделе "libraries",
"libraries": [ "/usr/local/lib/libnetfilter_queue.so.1.3.0" ]
У вас может быть node -gyp вставить путь для вас со встроенной переменной module_root_dir
Если я правильно интерпретирую ваш код, изменив ваш libraries
на, например:
"libraries": [
"-lmylib",
"-L<(module_root_dir)/../Library/binaries/linux/Release"
],
может сделать трюк. Хотя я не уверен, что он свяжется с версией .a
или .so
, чтобы указать, что вы можете попробовать:
"libraries": [
"<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a"
],
с out префиксом -L
и -lmylib
. Более того, я немного не уверен, если вам разрешено проходить через корневой каталог. Я раньше не тестировал ничего над корневым каталогом модуля. Помимо этого вам должно быть хорошо идти.