উত্তর:
আপনি দেখতে পাচ্ছেন যে সিপিইউ 64৪-বিট, ৩২-বিট, বা flagsলাইনটি ভিতরে পরীক্ষা করে উভয়ের পক্ষে সক্ষম /proc/cpuinfo। আপনার আর্কিটেকচার পরিবারের সম্ভাব্য পতাকাগুলি আপনাকে জানতে হবে। উদাহরণস্বরূপ, i386 / amd64 প্ল্যাটফর্মে, lmপতাকাটি amd64- সক্ষম সিপিইউগুলি সনাক্ত করে (সিপিইউগুলির যে পতাকাটি কেবল i386-কেবল নয়)।
grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC
আর্কিটেকচারটি জিজ্ঞাসা করে কার্নেলটি 32-বিট বা 64-বিট কিনা তা আপনি দেখতে পাচ্ছেন uname -m। উদাহরণস্বরূপ, i[3456]8632-বিট যখন x86_6464-বিট হয়। নোট করুন যে বেশ কয়েকটি আর্কিটেকচারে একটি -৪-বিট কার্নেল ৩২-বিট ইউজারল্যান্ড প্রোগ্রাম চালাতে পারে, সুতরাং 64৪ uname -m-বিট কার্নেল দেখানো হলেও , guarantee৪-বিট লাইব্রেরি উপলব্ধ থাকার কোনও নিশ্চয়তা নেই।
[ "$(uname -m)" = "x86_64" ] # Assuming a PC
নোট যে uname -mএকটি "ভার্চুয়ালাইজড" মান ফিরে আসতে পারে। উদাহরণস্বরূপ, লিনাক্সের অধীনে, আপনি যদি setarch i386 bashএকটি এমডি 64 সিস্টেমে চালিত হন এবং আপনি uname -mসেই ব্যাশ থেকে চালান তবে আপনি uname -mপ্রতিবেদন দেখতে পাবেন i386। এটি কার্যকরভাবে আপনাকে ভান করতে দেয় যে আপনি "32-বিট সিস্টেমে" রয়েছেন যদিও কার্নেলটি 64-বিট এক, উদাহরণস্বরূপ ক্রস-সংকলন স্থাপন না করে 32-বিট প্রোগ্রামগুলি সংকলন করা।
কমান্ডের সাহায্যে এলএসবি সমর্থন জিজ্ঞাসা করে আপনি ইউজারল্যান্ডে কী উপলব্ধ তা দেখতে পাচ্ছেন lsb_release। আরও স্পষ্টভাবে, সমর্থিত এলএসবি বৈশিষ্ট্যগুলির lsb_release -sএকটি- :বিযুক্ত তালিকা মুদ্রণ করে। প্রতিটি বৈশিষ্ট্যের ফর্ম রয়েছে । উদাহরণস্বরূপ, একটি ix86 সি লাইব্রেরির উপলব্ধতা দ্বারা নির্দেশিত হয় , যখন amd64 এর জন্য অ্যানালগ থাকে। প্রতিটি বিতরণ সমস্ত উপলভ্য এলএসবি মডিউল যদিও ঘোষণা করে না, তাই এটি সনাক্তকরণযোগ্যের চেয়ে আরও বেশি উপলভ্য হতে পারে।module-version-architecturecore-2.0-ia32core-2.0-amd64
আপনি উন্নয়নের জন্য পছন্দের শব্দের আকারটি সন্ধান করতে পারেন (একটি সি সংকলক উপলব্ধ আছে তা অনুমান করে) একটি 5-লাইন সি প্রোগ্রাম সংকলন করে যা প্রিন্ট করে sizeof(void*)বা sizeof(size_t)।
getconf WORD_BITবা getconf LONG_BITপরিবর্তে (তুচ্ছ, এবং পোর্টেবল যদিও এটা হয়) আপনার নিজের সি প্রোগ্রাম কম্পাইল করার থাকার।
getconfএখানে ব্যবহারের কথা ভাবিনি । এটি নীতিগতভাবে দুর্দান্ত লাগছে, তবে এটি নিশ্চিত করা শক্ত যে আপনি যে নির্দিষ্ট সি সংকলকটি ব্যবহার করছেন তার প্রয়োগ রয়েছে, যদি একের বেশি থাকে (সাধারণত জিসিসি / আইসিসি বা লিনাক্স, জিসিসি / নেটিভ সিসি অন্য কোথাও থাকে)। একটি প্রমিত সিস্টেমে getconfপ্রয়োগ করা উচিত c89বা c99মধ্যে $(getconf PATH), কিন্তু বাস্তবে আমি কাউকে একটি বিকল্প ইনস্টল সম্পর্কে চিন্তা চাই ccযা বিক্রেতা দ্বারা দৌড়ে c89মোড়কের।
.Regex অনুপস্থিত: grep '^flags.*:.*\blm\b' /proc/cpuinfo। এছাড়াও এটি কেবল -qপতাকা ছাড়াই আমার পক্ষে কাজ করে
.: আমার কাছে "শূন্য বা আরও বেশি জায়গা" ছিল তবে আসলে একটি ট্যাব রয়েছে। ট্যাবগুলিকেও অনুমতি দেওয়ার জন্য আমি রেজিপ্লেক্স পরিবর্তন করেছি। সঙ্গে -qপতাকা, কোন আউটপুট, কিন্তু কমান্ডের প্রস্থান অবস্থা বলে আপনি কিনা পতাকা উপস্থিত। আপনি যদি আউটপুট চান তবে -qপতাকাটি সরান ।
-qপতাকা সম্পর্কে জানতাম না । টাই, এখন কাজ করে :)
আপনি 64-বিট চালাচ্ছেন কিনা তা দেখতে আপনি ব্যবহার করতে uname -aএবং সন্ধান করতে পারেন x86_64। আর কিছু (যতদুর আমি জানি) এবং আপনার 32 বিট দৌড়াচ্ছে অথবা আপনি যেমন অ পিসি হার্ডওয়্যার হয় alpha, sparcঅথবা ppc64।
alpha, sparc64, ppc64, ...
টাইপ করুন:
uname -a
যদি আপনি পান তবে x86_64 GNU/Linuxআপনি একটি 64 বিট কার্নেল চালাচ্ছেন। যদি আপনি এর মতো কিছু পান তবে আপনি i386/i486/i586/i686সম্ভবত 32 বিট কার্নেল চালাচ্ছেন
getconf সর্বাধিক সিস্টেম কল ব্যবহার করে:
$ strace getconf LONG_BIT | wc -l
253
$ strace arch | wc -l
280
$ strace uname -m | wc -l
281
$ strace grep -q lm /proc/cpuinfo | wc -l
301