2011-07-12 7 views
6

के बिना node.js एडन बनाएं Iclipse सीडीटी का उपयोग कर सी ++ में एक साधारण node.js एडन लिख रहा हूं। इस परियोजना में कई फाइलें हैं और मैं ग्रहण की प्रबंधित बिल्ड सिस्टम का उपयोग करना चाहता हूं।नोड-वेफ

मैं node-waf के साथ एक साधारण एडन उदाहरण संकलित कर सकता हूं, लेकिन मैं बिना किसी वाफ़ के उचित साझा लाइब्रेरी बनाने के लिए अपने ग्रहण टूलचैन को कॉन्फ़िगर नहीं कर सकता। वेफ दृश्यों के पीछे जीसीसी का उपयोग करता है, इसलिए मुझे यकीन है कि यह संभव है।

मुझे किस libs से लिंक करना चाहिए और इसे काम करने के लिए मुझे किस तरह के विकल्प पास करना चाहिए?

वर्तमान में मैं निम्नलिखित त्रुटि मिलती है अगर मैं अपने lib require करने की कोशिश:

SyntaxError: Unexpected token ILLEGAL 

उत्तर

8

अंत में जवाब मिल गया।

आवश्यक संकलक झंडे:

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 

importand ध्यान दें:

साझा लाइब्रेरी चाहिए विस्तार .node, जैसे है: foobar.node

+0

इस उत्कृष्ट है से है। मैं क्लैंग ++ का उपयोग कर रहा हूं, क्या किसी को भी (शेर पर), और (मैवेरिक्स पर) के लिए सही झंडे पता है? – Dave

+0

क्लैंग विकल्प आमतौर पर जीसीसी के साथ संगत होते हैं। – erenon

3

मैंने लिनक्स में कोशिश नहीं की है, लेकिन कम से कम ओएसएक्स में मुझे -undefined suppress और -flat_namespace का उपयोग करना था क्योंकि node.js (v0.4.12) के पास निष्पादन योग्य में इसकी स्थिर रूप से जुड़ी v8 लाइब्रेरी है।

निम्नलिखित Makefile MacOSX शेर में mod.node में mod.cpp संकलित:

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 

रनिंग बनाने:

node app.js 
{ hello: 'World' } 

नोट: mod.cpp के स्रोत कोड यह Addons tutorial