I have a simple binding.gyp file for building my node.js extension. I want to change the linking method of the library "mylib" and link it statically instead of using shared library.
{
"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" ]
}
]
}
The static and shared versions of mylib are in the same directory:
# ls /home/admin/MyLib/Library/binaries/linux/Release
libmylib.a libmylib.so
I want to link statically to avoid library installing/loading issues.
You could have node-gyp insert the path for you with the built in variable module_root_dir
If I interpret your code correctly, changing your libraries
to e.g.:
"libraries": [
"-lmylib",
"-L<(module_root_dir)/../Library/binaries/linux/Release"
],
might do the trick. Though I'm not sure if it will link with the .a
or .so
version, to specify that you could try:
"libraries": [
"<(module_root_dir)/../Library/binaries/linux/Release/libmylib.a"
],
without the -L
prefix and -lmylib
. Further more, I'm a bit unsure if you're allowed to traverse above the root directory though. I have not tested using anything above the module root directory before. Other than that you should be good to go.