Apakah mungkin untuk mengkompilasi sistem Linux lengkap dengan kompiler Intel, bukan GCC?

26

Mungkin ada beberapa masalah kompatibilitas?

Saya memiliki kesan bahwa untuk sistem berbasis Intel, kompiler Intel berpotensi melakukan pekerjaan yang lebih baik daripada GCC. Mungkin sudah ada distro yang sudah mencoba ini?

Saya pikir ini mungkin cukup mudah menggunakan Gentoo.

barrymac
sumber
4
Beberapa info bagus di sini, yang seharusnya saya temukan sebelumnya! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac
5
Saya harus bertanya-tanya tentang premis Anda: bagaimana Anda mengukur kompiler mana yang melakukan "pekerjaan yang lebih baik"? Eksekusi kode lebih cepat? Binari yang lebih kecil? Waktu kompilasi yang lebih cepat?
Eli Heady
1
Saya akan mengukurnya pada kode yang lebih cepat pertama, binari yang lebih kecil kedua tetapi tidak akan terlalu peduli tentang ukuran biner kecuali itu cukup dramatis. Mungkin kekhawatiran lain bisa menjadi efisiensi energi
barrymac

Jawaban:

29

Anda tidak akan dapat mengkompilasi semuanya dengan icc. Banyak program di luar sana menggunakan ekstensi GCC ke bahasa C. Namun Intel telah melakukan banyak upaya untuk mendukung sebagian besar ekstensi ini; misalnya, versi terbaru icc dapat mengkompilasi kernel Linux.

Gentoo memang pilihan terbaik Anda jika Anda suka mengkompilasi ulang perangkat lunak Anda dengan cara yang tidak biasa. The halaman icc di Gentoo wiki menggambarkan rintangan utama.

Pertama buat instalasi dasar Gentoo, dan emerge icc. Jangan hapus icc nanti selama Anda memiliki biner yang dikompilasi dengan icc di sistem Anda. Perhatikan bahwa icc dipasang di /opt; jika itu tidak ada di partisi root Anda, Anda harus menyalin pustaka icc ke partisi root Anda jika ada program yang digunakan saat boot dikompilasi dengan icc.

Siapkan /etc/portage/bashrcdan nyatakan opsi kompilasi favorit Anda; lihat wiki Gentoo untuk skrip yang lebih menyeluruh yang mendukung pembuatan paket berbeda dengan kompiler berbeda (ini diperlukan karena icc memecah beberapa paket).

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"
Gilles 'SANGAT berhenti menjadi jahat'
sumber
13

Ini tentu akan menjadi pengalaman yang menarik. Mengkompilasi ulang seluruh distro Linux menggunakan kompiler alternatif tidak akan benar-benar mudah. Banyak paket penting bergantung pada GCC dan utilitas toolchain GNU lainnya.

Layak untuk menggunakan kompiler alternatif untuk paket-paket yang tidak memerlukan GCC untuk membuat hibrida. Mungkin saja untuk mengganti paket yang bergantung pada GCC dengan yang lain yang akan dibuat dengan kompiler Anda, tetapi dalam kebanyakan kasus tidak ada terlalu banyak alternatif. Di mana ada, Anda harus menentukan apakah alternatif tersebut akan berfungsi sesuai dengan yang Anda inginkan.

Namun pertanyaan sebenarnya adalah: apakah itu layak? Jika Anda mencoba membangun sistem tertanam, kompiler alternatif mungkin menghasilkan binari yang lebih kecil. Jika Anda sedang membangun cluster komputasi, Anda bisa mendapatkan eksekusi kode lebih cepat. Jika Anda membangun desktop, Anda akan mendapatkan pengalaman belajar yang hebat.

Saya pikir pada akhirnya (dengan asumsi Anda sedang membangun desktop) Anda akan menemukan benar apa yang akhirnya memutuskan banyak pengguna sumber distro: jumlah waktu yang dihabiskan untuk mengoptimalkan dan membangun serta membangun kembali jauh melebihi waktu yang dihemat oleh eksekusi kode yang lebih cepat. Itu bukan untuk mengatakan bahwa itu tidak boleh dilakukan - itu bisa sangat menyenangkan. Jika Anda melakukannya, situs ini akan menjadi tempat yang tepat untuk menemukan jawaban dan mendokumentasikan upaya Anda.

Eli Heady
sumber