আমি 'মেক' ত্রুটি কোডগুলির একটি তালিকা কোথায় পাব?


26

আমি ফোরট্রান লেখা একটি প্রোগ্রাম ব্যবহার কম্পাইল করার চেষ্টা করছি make(আমি একটি আছে Makefile নামক যখন ধারণকারী ডিরেক্টরির, এবং Makefile নামক , আমি কমান্ড টাইপ $ make target, যেখানে "লক্ষ্য" একটি সিস্টেম-ভিত্তিক লক্ষ্য স্পেসিফিকেশন আমার উপস্থিত হয় Makefile নামক । আমি আমার টার্গেটের স্পেসিফিকেশনের বিভিন্ন সংশোধনী নিয়ে পরীক্ষা-নিরীক্ষা করা, কল করার চেষ্টা করার সময় আমি প্রায়শই বিভিন্ন ধরণের ত্রুটি বার্তা পাই makea কয়েকটি উদাহরণ দেওয়ার জন্য:

make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp   angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory
make: *** [cmu60] Error 2

এবং

make[1]: Entering directory
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer'-I/opt/mpich_intel/include  angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory 
make: *** [mpich-c2] Error 2

এবং

make[1]: Entering directory 
/bin/sh: line 0: test: too many arguments
./dpp -DSTRESS -DMPI -P -D'pointer=integer' -I/opt/mpich_intel/include  angfrc.f > angfrc.tmp.f
/bin/sh: ./dpp: Permission denied
make[1]: *** [angfrc.o] Error 126
make[1]: Leaving directory 
make: *** [mpi-intel] Error 2

"ত্রুটি 126" এবং "ত্রুটি 2," এর অর্থ কী হিসাবে আমি ত্রুটি কোডগুলির একটি তালিকা পেতে পারি তা কি আপনি জানেন? আমি এই থ্রেডটি অন্য ওয়েবসাইটে পেয়েছি , তবে উত্তরটির অর্থ কী তা নিশ্চিত I এর অর্থ কী makeত্রুটি কোডগুলির কোনও সিস্টেম-স্বতন্ত্র অর্থ নেই ? তুমি কি আমাকে সাহায্য করবে? ধন্যবাদ.


opussoftware.com/manual/appendices/B1.htm এর একটি তালিকা রয়েছে ...
উইল্ফ

উত্তর:


27

ত্রুটি কোডগুলি মেক থেকে নয়: মেকটি ব্যর্থ হওয়া কমান্ডের রিটার্ন স্থিতির প্রতিবেদন করছে। প্রতিটি স্থিতির মান কী তা জানতে আপনাকে প্রতিটি কমান্ডের ডকুমেন্টেশন দেখতে হবে। বেশিরভাগ কমান্ডগুলি 0 = সাফল্য, অন্য কিছু = ব্যর্থতা ব্যতীত ভিন্নতার সাথে উদ্বিগ্ন হয় না।

আপনার প্রতিটি উদাহরণে ./dppকার্যকর করা যায় না। যখন এটি ঘটে, তখন যে শেলটি এটিটি চালানোর চেষ্টা করেছিল তা স্ট্যাটাস কোড 126 (এটি স্ট্যান্ডার্ড আচরণ ) সহ প্রস্থান করে । তৈরির উদাহরণটি শেলটি চলছিল যেটি শেলটি একটি ব্যর্থ কমান্ড (শেল) সনাক্ত করে এবং আপনাকে প্রদর্শন করে প্রস্থান করে Error 126। মেকিংয়ের সেই উদাহরণটি নিজেই কোনও কমান্ডের পিতামাতাদের দ্বারা সম্পাদিত আদেশ হয় এবং makeইউটিলিটি ত্রুটিতে 2 প্রদান করে, তাই পিতামাতারা প্রতিবেদনগুলি তৈরি করে Error 2

আপনার বিল্ড ব্যর্থতা থেকে শুরু হতে পারে test: too many arguments। এটি মেকফাইলে সিনট্যাক্স ত্রুটি হতে পারে বা ব্যাশ-নির্দিষ্ট বৈশিষ্ট্যগুলির উপর নির্ভর করার কারণে এটি হতে পারে যখন আপনার /bin/shকোনও বাশ নেই। চালানোর চেষ্টা করুন make SHELL=/bin/bash targetবা make SHELL=/bin/ksh target; যদি এটি কাজ না করে, আপনার আপনার মেকফিলটি ঠিক করতে হবে।


14

স্পষ্ট করার জন্য, Make সর্বদা তিনটি ত্রুটি কোডের মধ্যে একটি ফেরত দেয়, যেমন gnu.orgবলেছে :

  • 0: প্রস্থান স্থিতি 'সফল'
  • 2: ত্রুটিযুক্ত ত্রুটি তৈরি করুন
  • 1: -কিউ (প্রশ্ন) পতাকায় প্রতিক্রিয়া ফিরিয়ে দিন, এটি নির্দেশ করে যে লক্ষ্যগুলি আপডেট করা প্রয়োজন

আপনি উপরের আপনার উদাহরণগুলি চালিয়ে পরীক্ষা করে দেখতে পারেন (ধরে নিলেন 2011 এ এখনও রয়েছে) এবং তারপরে echo $?পূর্ববর্তী রিটার্ন কোডটি মুদ্রণের জন্য টার্মিনালে চালিয়ে যেতে পারেন।

Make এর সাথে দেখা অন্যান্য ত্রুটি কোডগুলি মুদ্রণ করবে (যেমন আপনি খুঁজে পেয়েছেন 126) তবে এটি যদি কোনও ত্রুটিতে চলে তবে এটি সর্বদা 2 এর ত্রুটি কোডটি ফিরিয়ে দেবে।

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