উত্তর:
আপনি দেখতে পাচ্ছেন যে সিপিইউ 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]86
32-বিট যখন x86_64
64-বিট হয়। নোট করুন যে বেশ কয়েকটি আর্কিটেকচারে একটি -৪-বিট কার্নেল ৩২-বিট ইউজারল্যান্ড প্রোগ্রাম চালাতে পারে, সুতরাং 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-architecture
core-2.0-ia32
core-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