के लिए काम नहीं कर रहा है मैं एडब्ल्यूएस लैम्ब्डा के लिए एक देशी नोड मॉड्यूल विकसित कर रहा हूं। इस नोड मॉड्यूल की आवश्यकता json-cस्थिर लिंकिंग नोड मॉड्यूल
AWS lambda guidelines के अनुसार नोड मॉड्यूल में गतिशील निर्भरता नहीं होनी चाहिए। तो जेसन-सी पुस्तकालय के स्थिर संस्करण को जोड़ने का प्रयास किया। लेकिन मुझे संकलन समय त्रुटियां मिल रही हैं।
एक नोड मॉड्यूल सिर्फ एक शेयर की गई लाइब्रेरी है, मैंने लिखा एक sample C application (मुख्य साथ नाम दिया) नोड मॉड्यूल संकलन अनुकरण करने के लिए और इन परिणामों हैं:
g++ -shared -pthread -rdynamic -m64 -Wl,-soname=addon.node -o addon.node testjson.cpp -I /usr/include/json-c/ -L /lib/x86_64-linux-gnu/ -l:libjson-c.a
testjson.cpp: In function ‘int test()’:
testjson.cpp:6:14: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
char *str = "{ \"msg-type\": [ \"0xdeadbeef\", \"irc log\" ], \
^
/usr/bin/ld: /tmp/ccihB9d8.o: relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/tmp/ccihB9d8.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
और जब मैं के साथ की कोशिश की "- पूरे संग्रह ":
g++ -shared -o libshared.so -Wl,--whole-archive -fPIC -l:/usr/lib/x86_64-linux-gnu/libjson-c.a -Wl,--no-whole-archive testjson.cpp -I /usr/include/json-c/
testjson.cpp: In function ‘int test()’:
testjson.cpp:6:14: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
char *str = "{ \"msg-type\": [ \"0xdeadbeef\", \"irc log\" ], \
^
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libjson-c.a(json_c_version.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/lib/x86_64-linux-gnu/libjson-c.a(json_c_version.o): error adding symbols: Bad value
collect2: error: ld returned 1 exit status
क्या मैं गलत कर रहा हूँ यह स्थिर एक साझा ऑब्जेक्ट में एक पुस्तकालय लिंक करना संभव नहीं है?
क्या आपने वेनिला अमेज़ॅन लिनक्स एएमआई पर अपना मॉड्यूल बनाने का प्रयास किया था? इससे आपको संकेत मिलता है कि लैम्ब्डा क्या चल रहा है। – kixorz