在没有node-waf的情况下构buildnode.js插件

我使用Eclipse CDT在C ++中编写了一个简单的node.js插件。 该项目有很多文件,我想使用Eclipse的托pipe构build系统。

我可以使用node-waf编译一个简单的插件示例,但是我不能将我的Eclipse工具链configuration为在没有waf的情况下构build适当的共享库。 Waf在幕后使用gcc,所以我相信这是可能的。

我应该链接到哪些库,以及应该传递哪些选项以使其工作?

目前我得到以下错误,如果我试图require我的lib:

 SyntaxError: Unexpected token ILLEGAL 

终于find了答案。

必需的编译器标志

 g++ -g -fPIC -DPIC -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DEV_MULTIPLICITY=0 -I/usr/local/include/node addon.cc -c -o addon.o 

链接器标志:

 g++ addon.o -o addon.node -shared -L/usr/local/lib 

重要注意事项:

共享库必须具有扩展名.node ,例如:foobar.node

我没有尝试在Linux中,但至less在OSX中,我不得不使用-undefined suppress-flat_namespace因为node.js(v0.4.12)在可执行文件中有自己的静态链接的v8库。

下面的Makefile将mod.cpp编译成MacOSX Lion中的mod.node

 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 

$文件mod.o

 mod.o: Mach-O 64-bit object x86_64 

$文件mod.node

 mod.node: Mach-O 64-bit bundle x86_64 

运行make:

 node app.js { hello: 'World' } 

注意: mod.cpp的源代码来自Addons教程

Interesting Posts