Saya ingin tahu mengapa ketika saya menjalankan di gcc -v
bawah Arch Linux, itu menunjukkan unknown
kata di output ini:
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
sedangkan di distro lain, seperti ubuntu ia menunjukkan nama distro, seperti 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
linux
arch-linux
gcc
noslin005
sumber
sumber
gcc
Diinstal dengancore
paket ketika saya menginstal Arch.Jawaban:
Seperti yang telah disebutkan dalam komentar, secara default triplet target dihasilkan oleh skrip config.guess . Logikanya cukup sederhana. Pertama digunakan
uname
untuk mendapatkan beberapa informasi sistem dasar:String ini digabungkan dan dicocokkan dengan pola hardcode. Hasilnya juga hardcoded:
Untuk beberapa sistem dimungkinkan untuk memberikan hasil yang lebih bermakna, seperti IBM dalam "rs6000-ibm-aix".
Pengelola distribusi cukup mengesampingkan string ini dengan milik mereka sendiri (juga dengan hardcode):
GCC 6 mungkin akan menampilkan x86_64-pc-linux-gnu secara default: perbarui config.guess di repositori hulu.
sumber
unknown
hardcode secara default.Itulah bagian manufacterer dari konfigurasi / target triplet. The autobook mengatakan tentang itu:
The pengguna autoconf menyebutnya
company
.Saya bukan ahli dalam kompilasi dengan GCC, tetapi sepertinya informasi yang diberikan oleh bidang itu lebih bersifat informasi dan
unknown
hanya nilai default yang digunakan GCC kecuali ditimpa secara eksplisit. GCC pada Ubuntu 12.04 misalnya menggunakanx86_64-linux-gnu
, Debian 7s GCCi486-linux-gnu
, jadi sangat mungkin untuk membiarkan bidang itu kosong.sumber
x86_64-linux-gnu
berbagai adalah target shortcut, berdiri untukx86_64-unknown-linux-gnu
ataux86_64-pc-linux-gnu
.gcc -v
menunjukkan target yang dikompilasikan, danconfig.sub
memberikan triplet kanonik (lihat/usr/share/misc
pada sistem yang diturunkan dari Debian dengan yangautotools-dev
diinstal).