Я не пробовал в Linux, но по крайней мере в OSX мне пришлось использовать -undefined suppress
и -flat_namespace
, так как node.js (v0.4.12) имеет свою собственную статически связанную библиотеку v8 в исполняемом файле.
Следующий Makefile компилирует mod.cpp в mod.node в MacOSX Lion:
all: mod.node
node app.js
mod.o: mod.cpp
g++ -g -fPIC -DPIC -D_LARGEFILE_SOURCE -m64 -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DEV_MULTIPLICITY=0 -I/usr/local/include/node mod.cpp -c -o mod.o
mod.node: mod.o
g++ -flat_namespace mod.o -o mod.node -undefined suppress -bundle -L/usr/local/lib
clean:
rm mod.o
rm mod.node
$ file mod.o
mod.o: Mach-O 64-bit object x86_64
$ file mod.node
mod.node: Mach-O 64-bit bundle x86_64
Бег делает:
node app.js
{ hello: 'World' }
Примечание: Исходный код mod.cpp из учебника Addons