কেন জিসিসি লক্ষ্যবস্তুতে `অজানা`: আর্চ লিনাক্সে x86_64-অজানা-লিনাক্স-gnu?


12

আমি জানতে চাই কেন আমি যখন gcc -vআর্চ লিনাক্সের অধীনে চলেছি তখন এটি unknownএই ফলাফলগুলিতে শব্দটি দেখায় :

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/5.1.0/lto-wrapper
Target: x86_64-unknown-linux-gnu

অন্য ডিস্ট্রোতে থাকাকালীন, উবুন্টুর মতো এটি ডিস্ট্রো নামটি দেখায়, যেমন ubuntu:

 Using built-in specs.
 COLLECT_GCC=gcc
 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-ubuntu-linux-gnu/5.1.0/lto-wrapper
 Target: x86_64-ubuntu-linux-gnu

আপনি কোথা থেকে এই জিসিসি ইনস্টল করেছেন?
ফাহিম মিঠা

gcccoreআমি যখন আর্চ ইনস্টল করছিলাম তখন প্যাকেজগুলির সাথে ইনস্টল করা হয়েছিল।
noslin005

ঠিক আছে. হয়ত সেই প্যাকেজের জন্য সংকলনের নির্দেশাবলী পরীক্ষা করে দেখুন, তাহলে?
ফাহিম মিঠা

উত্তর:


8

যেমনটি ইতিমধ্যে মন্তব্যে উল্লেখ করা হয়েছিল, ডিফল্টরূপে কনফিগ.গেস স্ক্রিপ্ট দ্বারা লক্ষ্য ট্রিপলেট তৈরি করা হয় । এটি যুক্তি মোটামুটি সহজ। প্রথমে এটি unameকিছু বেসিক সিস্টেম তথ্য পেতে ব্যবহার করে:

UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown

এই স্ট্রিংগুলি একত্রীকরণ করা হয় এবং হার্ডকোডযুক্ত নিদর্শনগুলির সাথে মিলে যায়। ফলাফলটি হার্ডকোডযুক্ত:

case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
...(snip)...
    x86_64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
...(snip)...

কিছু সিস্টেমের জন্য আরও অর্থবহ ফলাফল দেওয়া সম্ভব, যেমন "আরএসএম 6000-আইবিএম-আইকস"-তে আইবিএম।

বিতরণ রক্ষণাবেক্ষণকারীরা কেবল তাদের নিজের (হার্ডকডযুক্ত) দিয়ে এই স্ট্রিংটিকে ওভাররাইড করে:

$ gcc -v
...(snip)...
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10'
...(snip)...
--target=x86_64-linux-gnu

জিসিসি 6 সম্ভবত x86_64-pc-linux-gnu কে ডিফল্টরূপে আউটপুট দেয়: আপস্ট্রিম রিপোজিটরিতে আপডেট কনফিগারেশন ess


আশ্চর্যজনক যে জিসিসি 6 বিকাশ করছে।
acgtyrant

ওএমজি, তাই unknownডিফল্টভাবে হার্ডকোড করা হয়।
অ্যাক্টিগ্র্যান্ট

4

এটি কনফিগারেশন / টার্গেট ট্রিপলেটের ম্যানুফ্যাক্টারের অংশ। Autobook যে সম্পর্কে বলেন:

manufacturer
   A somewhat freeform field which indicates the manufacturer of the system. This is often simply `unknown'. Other common strings are `pc' for an IBM PC compatible system, or the name of a workstation vendor, such as `sun'.

Autoconf ম্যানুয়াল এটা কল company

আমি জিসিসির সাথে সংকলনে বিশেষজ্ঞ নই, তবে মনে হয় এই ক্ষেত্রের সরবরাহিত তথ্য তথ্যগত প্রকৃতির বেশি এবং unknownস্পষ্টভাবে ওভাররাইট না করা হলে জিসিসি কেবল ডিফল্ট মান হিসাবে ব্যবহার করে। উবুন্টু ১২.০৪-তে জিসিসি উদাহরণস্বরূপ ব্যবহারগুলি x86_64-linux-gnu, ডেবিয়ান 7 এস জিসিসি i486-linux-gnu, সুতরাং ক্ষেত্রটি খালি ফেলে রাখা সম্পূর্ণ সম্ভব।


যে প্রায় কাছাকাছি এটা. x86_64-linux-gnuবিভিন্ন শর্টকাট লক্ষ্যগুলি হয়, জন্য দাঁড়িয়ে x86_64-unknown-linux-gnuবা x86_64-pc-linux-gnugcc -vএটি যে টার্গেটের জন্য সংকলিত হয়েছিল তা দেখায় এবং config.subএটি ক্যানোনিকাল ট্রিপলেট দেয় (এটি ইনস্টলযুক্ত /usr/share/miscডেবিয়ান-উত্পন্ন সিস্টেমগুলিতে সন্ধান করুন autotools-dev)।
স্টিফেন কিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.