के साथ प्रारंभ करना तो थोड़ी देर के लिए वेब खोजने के बाद, मैंने यहां कोशिश करने का फैसला किया क्योंकि यह चर्चा के लिए एक अच्छा मंच प्रतीत होता है। मैं एक साधारण जीसीसी प्लगइन बनाने की कोशिश कर रहा हूँ। कार्यक्रम कोड इस मेल के अंत में संलग्न है, लेकिन सादे अंग्रेजी में यह प्लगइन पंजीकृत करता है और यह सुनिश्चित करता है कि pragma_init फ़ंक्शन को प्रिमामा पंजीकृत होने पर कहा जाता है। यह यहां है कि मैं कुछ pragmas को रोकने के लिए c_register_pragma का उपयोग करता हूं।जीसीसी प्लगइन्स
मैं इसे http://gcc.gnu.org/onlinedocs/gccint/Plugins-building.html#Plugins-building में उदाहरण का उपयोग करके संकलित करता हूं। संकलन और लिंकिंग ठीक काम करता है। हालांकि, जब मैं प्लग-इन लोड करता हूं तो मुझे मिलता है:
gcc -c -fplugin=plugin.so test.c -o test.o
cc1: error: cannot load plugin plugin.so
plugin.so: undefined symbol: warning
मैं क्या गलत कर रहा हूं? इसके अतिरिक्त, जब कुछ हेडर फ़ाइलों (बाद में इसकी आवश्यकता होगी) सहित, मुझे बहुत सारी त्रुटियां मिलती हैं। "Tree.h" पैदावार (50 अन्य त्रुटियों के बीच) सहित उदाहरण के लिए, के लिए:
/machmode.h:262:1: error: unknown type name 'class'
class bit_field_mode_iterator
^
/machmode.h:263:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
{
^
/plugin/include/tree.h:27:0,
from conftest.c:63:
/vec.h:220:8: error: field 'register_overhead' declared as a function
किसी को भी मैं गलत क्या कर रहा हूँ पर एक सुराग नहीं है?
धन्यवाद
आप http उपयोग करने पर विचार किया था जी के साथ ++ जीसीसी के बजाय संकलन
त्रुटियों आप शामिल में सभी फाइलों के साथ मिल गया के सैकड़ों अपने कंप्यूटर में हल कर रहे हैं -melt.org/ जो सीई ++ में जीसीसी प्लगइन बनाने के बजाय एमईएलटी (जीसीसी का विस्तार करने के लिए एक डोमेन विशिष्ट भाषा) में आपके जीसीसी एक्सटेंशन को कोड कर रहा है? –
'gcc -v' का आउटपुट क्या है? –
-v (तब प्लगइन संकलित करते समय) का आउटपुट है: collect2 --eh-frame-hdr -m elf_x86_64 -shared -o plugin.so /lib/../lib64/crti.o/gcc-48/lib/जीसीसी/x86_64-अज्ञात-लिनक्स-gnu/4.8.0/crtbeginS.o -L/gcc-48/lib/gcc/x86_64-अज्ञात-लिनक्स-gnu/4.8.0 -L/gcc-48/lib/gcc/x86_64-अज्ञात-लिनक्स-gnu/4.8.0 /../../../../ lib64 -L/lib /../ lib64 -L/usr/lib /../ lib64 -L/gcc- 48/lib/gcc/x86_64-अज्ञात-लिनक्स-gnu/4.8.0 /../../ .. plugin.o -lgcc --as-required -lgcc_s --no-as-required -lc -lgcc - -as-required -lgcc_s --no-as-required /gcc-48/lib/gcc/x86_64- अज्ञात-linux-gnu/4.8.0/crtendS.o /lib/../lib64/crtn.o – llubder