دول مجلس التعاون الخليجي، وجعل: كيفية تعطيل فشل في التحذير؟

StackOverflow https://stackoverflow.com/questions/2414242

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول بناء دول مجلس التعاون الخليجي للاستخدام مع وحدة تحكم صغيرة AVR و AVR-ADA، وقد وصلت إلى حاجز طريق ناتج عن المترجم العادي من الصعب إرضاءه للغاية حول الإصدار الذي أحتاجه ل AVR. أحصل على التحذير التالي، والذي يؤدي بدوره إلى دول مجلس التعاون الخليجي أو جعل الإبلاغ عن خطأ:

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

هل هناك طريقة لتوجيه دول مجلس التعاون الخليجي أو عدم تفشل في التحذيرات؟

هل كانت مفيدة؟

المحلول

الزناد هنا هو -natpg (في الواقع، TheGnatg): هذا هو "وضع التنفيذ NOAT (المستخدم لتحويل وحدات GNAT)". -gnatp يعني "قمع جميع الشيكات".

لست متأكدا من التأثير الكامل لتشيرج، على الرغم من أنه يؤدي بالتأكيد إلى التعامل مع تحذيرات كأخطاء - مثل -Werror - على أي حال من المعدل أثناء بناء المحول البرمجي نفسه؛ أعتقد أنني أتذكر رؤية تحذيرات غير قاتلة أثناء بناء RTS.

احتمال واحد سيكون لتجميع 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

ثم نسخ مستوى واحد، و "جعل" مرة أخرى.

هذا مترجم متقاطع، لذلك لن تحتاج (آمل!) لتكرار ذلك لجميع المراحل الثلاث من بناء كامل.

نصائح أخرى

يحاول make -k بدلا من مجرد make. وبعد هذا سوف يستمر "بدلا من التوقف.

كبديل للغوص في نظام البناء، حاول الإعداد -Wno-error في cflags، التي يجب أن تكون قادرا على القيام بها من خلال البيئة (أو في تكوين الوقت، إذا كنت تستخدم نظام بناء جنو).

يبدو أن -Werror Flag يقع في Makefile. ربما يمكنك البحث عن خيارات CFLAGS في Makefile وإزالة علم -Werror. العلم Werror سيجعل جميع التحذيرات في أخطاء.

بشكل عام، ليس من الجيد أن تجاهل التحذيرات من مترجمك. ومع ذلك، إذا كان هذا جزءا من عملية عمل أكبر، فمن المحتمل -Werror العلم إدراج في وقت سابق في التسلسل. البدء من خلال البحث عن ذلك.

بعد النظر حولها، يبدو أن هناك ثروة من الأعلام للتحكم في التحذيرات أثناء تجميع كود ADA. على سبيل المثال، -gnatwF إرادة قمع التحذيرات على forlsals غير المعجل وفقا ل هذا الدليل. وبعد ربما يمكن العثور على التبديل الذي تحتاجه في القائمة المقدمة هناك.

في GCC تكوين يمكنك إضافة --disable-werror.

على الرغم من أنه من المستحسن البحث عن التصحيح المناسب أولا.

ماذا عن وضع "تحذيرات براغما (إيقاف،" ... ")" في الأجزاء المخالفة من التعليمات البرمجية الخاصة بك؟

يرى http://www.adacore.com/2007/11/19/ADA-GEM-18/.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top