2010-03-10 8 views
7

मैं एवीआर माइक्रो कंट्रोलर और एवीआर-एडीए के साथ उपयोग के लिए जीसीसी बनाने की कोशिश कर रहा हूं, और मैंने अपने नियमित कंपाइलर के कारण एवीआर के लिए आवश्यक संस्करण के बारे में बहुत पसंद किया है, जिसके कारण मैंने एक रोडब्लॉक मारा है।जीसीसी, बनाओ: चेतावनी पर असफल कैसे अक्षम करें?

gcc -c -g -O2 -gnatpg -gnata -nostdinc -I- -I. -Iada 
    -I../../gcc/ada ../../gcc/ada/exp_ch5.adb -o ada/exp_ch5.o 
exp_ch5.adb:177:16: warning: function "Has_Address_Clause" is not referenced 
make[2]: *** [ada/exp_ch5.o] Error 1 
make[1]: *** [all-gcc] Error 2 
make: *** [all] Error 2 

वहाँ जीसीसी हिदायत या चेतावनी पर असफल नहीं करने के लिए बनाने के लिए एक रास्ता है: मैं निम्न चेतावनी, जो बारी में जीसीसी का कारण बनता है या कोई त्रुटि रिपोर्ट करने के लिए बनाने के मिल सकता है?

+1

मुझे नहीं लगता कि किसी भी डीबग विकल्प के परिणामस्वरूप चेतावनियों का इलाज त्रुटियों के रूप में होता है (कम से कम मुझे नहीं मिल सकता), क्या यह पूर्ण आउटपुट है? –

उत्तर

5

यहां ट्रिगर -gnatpg (वास्तव में, -gnatg) है: यह "जीएनएटी कार्यान्वयन मोड (जीएनएटी इकाइयों को संकलित करने के लिए उपयोग किया जाता है)" है। -gnatp का मतलब है "सभी चेक दबाएं"।

मुझे -gnatg के पूर्ण प्रभाव के बारे में निश्चित नहीं है, हालांकि यह निश्चित रूप से चेतावनियों को त्रुटियों के रूप में माना जाता है - जैसे - आतंक - संकलक स्वयं के निर्माण के दौरान किसी भी दर पर; मुझे लगता है कि आरटीएस के निर्माण के दौरान मुझे गैर-घातक चेतावनियां देखना याद है।

एक संभावना केवल exp_ch5.adb को संकलित करना होगा बिना -gnatg; आदेश आप सूची जीसीसी में जारी किया गया था/है, तो

$ cd gcc 
$ gcc -c -g -O2 -gnatp -gnata -nostdinc -I- -I. -Iada -I../../gcc/ada \ 
    ../../gcc/ada/exp_ch5.adb -o ada/exp_ch5.o 

फिर वापस ऊपर एक स्तर है, और फिर 'बनाने'।

यह एक क्रॉस-कंपाइलर है, इसलिए आप (मुझे उम्मीद है!) पूर्ण निर्माण के सभी तीन चरणों के लिए इसे दोहराने की आवश्यकता नहीं होगी।

+0

धन्यवाद, आपके समाधान ने मुझे उपर्युक्त त्रुटि को पार करने की अनुमति दी। मेरे पास एडा संकलक से अधिक चेतावनियां हैं, लेकिन मैं अब साथ चलूंगा! –

32

make के बजाय make -k आज़माएं। यह रोकने के बजाय 'जारी' होगा।

+1

ओएमजी धन्यवाद आप Dirk =) – Crasher

3

ऐसा लगता है - मेकफ़ाइल में आतंक ध्वज सेट किया गया है। हो सकता है कि आप मेकफ़ाइल में CFLAGS विकल्पों की तलाश कर सकें और -प्रवाह ध्वज हटा दें। आतंक ध्वज सभी चेतावनियों को त्रुटियों में डाल देगा।

4

सामान्यतः, आपके कंपाइलर से चेतावनियों को अनदेखा करना एक अच्छा विचार नहीं है। हालांकि, अगर यह एक बड़ी मेक प्रक्रिया का एक हिस्सा है तो अनुक्रम में पहले -Werror ध्वज डाला गया है। उस की तलाश करके शुरू करो।

आसपास देखने के बाद, एडा कोड संकलित करते समय चेतावनियों को नियंत्रित करने के लिए झंडे का एक धन प्रतीत होता है। उदाहरण के लिए, -gnatwFthis guide के अनुसार अप्रतिबंधित सूत्रों पर चेतावनियों को दबाएं। संभवतः आपके द्वारा आवश्यक स्विच को वहां दी गई सूची में पाया जा सकता है।

+0

हाँ, उसने जो कुछ भी चिपकाया वह कुछ भी नहीं होगा - आतंक चालू हो रहा है। यह अंश से पहले होना था। –

+0

मुझे पता नहीं है कि यह एक अच्छा विचार नहीं है, और मैंने जीसीसी/gnat (gcc-4.3.2) के पुराने संस्करण को बनाने की कोशिश की ताकि मैं एवीआर जीसीसी/gnat (gcc-4.3.2) भी बना सकूं, लेकिन मैं था वही समस्या में भी चल रहा है। प्रोजेक्ट के मालिक से बात करने के बाद, उन्होंने मुझे कोड बेस के लिए मेरे सिस्टम एडा कंपाइलर (जीसीसी-4.3.4) "बहुत नई गंध" बताया, और मेरे विकल्प स्रोत कोड को हैक करना या विफल या चेतावनी को ओवरराइड करने का प्रयास करना था। –

+0

ठीक है, मुझे याद है कि थोडा समय के लिए एडा से निपटना और मेरे लिए, दृष्टिकोण को निर्माण में वृद्धि करना होगा। जैसा कि मुझे याद है कि एडा चीजों के बारे में सही है। – ezpz

8

बिल्ड सिस्टम में डाइविंग के विकल्प के रूप में, CFLAGS में -Wno-error सेट करने का प्रयास करें, जिसे आप पर्यावरण के माध्यम से करने में सक्षम होना चाहिए (या जीएनयू बिल्ड सिस्टम का उपयोग करते समय कॉन्फ़िगर समय पर)।

2

जीसीसी कॉन्फ़िगरेशन में आप --disable-werror जोड़ सकते हैं।

हालांकि पहले उचित पैच की तलाश करने की सलाह दी जाती है।