সতর্কতাগুলি ত্রুটি হিসাবে গণ্য করা ছাড়া কীভাবে সংকলন করবেন?


96

সমস্যাটি হ'ল একই কোড যা উইন্ডোজে ভাল সংকলন করে, উবুন্টুতে সংকলন করতে অক্ষম। প্রতিবারই আমি এই ত্রুটি পেয়েছি:

cc1: warnings being treated as errors

এখন এটি বড় কোড বেস এবং আমি সমস্ত সতর্কতা ঠিক করতে পছন্দ করি না।

সতর্কতা সত্ত্বেও আমি কীভাবে সফলভাবে সংকলন করতে পারি?


4
আমি সতর্কতার সাথে সংশোধন করার চেষ্টা করার পরামর্শ দিচ্ছি। যদি তাৎক্ষণিকভাবে না হয় তবে ধীরে ধীরে একবার আপনি পরিত্রাণ পেয়ে গেলে -Werror, আপনি সতর্কতাগুলি সরিয়ে দেওয়ার পরে, এটি প্রতি ডিরেক্টরি ভিত্তিতে আবার যুক্ত করতে পারেন।
উগোরেন

আপনি সফলভাবে সংকলন করলেও এটি আপনার প্রত্যাশার মতো চলতে পারে না। আমার কয়েকটি লোক কোড লিখেছিল যা উইন্ডোজে ঠিকঠাক কাজ করে তবে লিনাক্সের সাথে সাথে ক্র্যাশ হয়ে যায়।
ডেনিস মেং

তাদের দরকারী মন্তব্য এবং উত্তরের জন্য সবাইকে ধন্যবাদ। প্রয়োজনীয়তা অনুসারে মনে হচ্ছে যে সমস্ত সতর্কতাগুলি আমি ঠিক করেছি, যা আমি শুরু করেছি। তবে এখন আমি যে সতর্কতাটি পাচ্ছি তা স্ক্লাইট 3 সি এর থেকে: সাইন ওভারফ্লো অনুমান করা হয় না যখন ধরে নেওয়া (এক্স - সি) <= এক্স সবসময় সত্য
সৌরভ ভার্মা

উত্তর:


84

অবশ্যই, কোথায় -Werrorসেট আছে তা সন্ধান করুন এবং সেই পতাকাটি সরান। তাহলে সতর্কতা কেবল সতর্কতা হবে be


4
ধন্যবাদ ড্যানিয়েল, তবে আমার প্রকল্পে কোনও ওয়ারার পতাকা সেট নেই। আমি এটি অন্য কোথাও সন্ধান করা উচিত?
সৌরভ ভার্মা

13
কোথাও এটি সেট করা আবশ্যক, ডিফল্টরূপে সতর্কতাগুলি আমার জানা কোনও সংকলক দ্বারা ত্রুটি হিসাবে বিবেচিত হবে না। যদি আপনি এটি খুঁজে না পান তবে -Wno-errorনাইটক্র্যাকারের পরামর্শ অনুসারে আপনি এটিকে ওভাররাইড করার চেষ্টা করতে পারেন । -Werrorআপনি CFLAGSমেকফাইলে যে ফ্ল্যাগগুলি সেট আপ করেছেন তার পরে পাস না করা হলে এটি কাজ করা উচিত ।
ড্যানিয়েল ফিশার

33

আপনি সমস্ত সতর্কতাগুলি ব্যবহার হিসাবে বিবেচনা করা যেতে পারে -Wno-error। আপনি যে সতর্কবার্তাটি ত্রুটি হিসাবে বিবেচনা করতে চান না তার নামটি -Wno-error=<warning name>কোথায় <warning name>তা ব্যবহার করে আপনি যেমন নির্দিষ্ট সতর্কতাগুলি হিসাবে বিবেচনা করতে পারেন।

আপনি যদি সমস্ত সতর্কতা সম্পূর্ণরূপে অক্ষম করতে চান তবে ব্যবহার করুন -w(প্রস্তাবিত নয়)।


সূত্র: http://gcc.gnu.org/onlinesocs/gcc-4.3.2/gcc/Warning-Options.html




4

আপনি যদি লিনাক্স কার্নেল সংকলন করে থাকেন। উদাহরণস্বরূপ, যদি আপনি "অব্যবহৃত-তবে-সেট-ভেরিয়েবল" সতর্কতাটি অক্ষম করতে চান তবে তাকে ত্রুটি হিসাবে বিবেচনা করা হবে। আপনি একটি বিবৃতি যোগ করতে পারেন:

KBUILD_CFLAGS += $(call cc-option,-Wno-error=unused-but-set-variable,)

আপনার Makefile মধ্যে


3

সমস্ত সহায়ক পরামর্শের জন্য ধন্যবাদ। আমি শেষ পর্যন্ত নিশ্চিত করেছিলাম যে আমার কোডে কোনও সতর্কতা নেই, তবে আবার এই সতর্কতাটি স্কয়ারাইট 3 থেকে পেয়েছি:

Assuming signed overflow does not occur when assuming that (X - c) <= X is always true

যা আমি নিম্নলিখিত সিএফএলএগ যুক্ত করে ঠিক করেছি:

-fno-strict-overflow

আপনার কোডে সমস্যাযুক্ত নির্মাণের দিকে আপনাকে নির্দেশ করার জন্য অনেক সতর্কতা রয়েছে। এগুলি অক্ষম করা আপনাকে সংক্ষিপ্ত দৃষ্টিকোণে এগিয়ে যেতে দেবে, তবে আপনি কখনই জানতে পারবেন না যে এই সমস্যাগুলি আপনাকে দীর্ঘকাল ধরে হতাশ করতে ফিরে আসবে কিনা।
বেনিয়ামিন বান্নিয়ার

4
হ্যাঁ তুমিই ঠিক. আমি বোঝানো যে আমি নিশ্চিত যে আমার কোড বিনামূল্যে সতর্কীকরণ হয় (আমি সব সতর্কবার্তা অক্ষম করতে থাকেন) তৈরি করেছি
সৌরভ ভার্মা

3

-Wallএবং -Werrorসংকলক বিকল্পগুলি এর কারণ হতে পারে, দয়া করে পরীক্ষা করুন সেগুলি সংকলক সেটিংসে ব্যবহৃত হয় কিনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.