È possibile compilare un sistema Linux completo con il compilatore Intel anziché GCC?


26

Forse ci sono alcuni problemi di compatibilità?

Ho l'impressione che per i sistemi basati su Intel, il compilatore Intel potrebbe potenzialmente fare un lavoro migliore di GCC. Forse c'è già una distro che ha tentato questo?

Penso che questo potrebbe essere abbastanza semplice usando Gentoo.


4
Alcune buone informazioni qui, che avrei dovuto trovare prima! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

5
Devo chiedermi la tua premessa: come giudichi quale compilatore fa "un lavoro migliore"? Esecuzione più rapida del codice? Binari più piccoli? Tempi di compilazione più rapidi?
Eli Heady,

1
Prima lo misi sul codice più veloce, poi sui binari più piccoli, ma non mi interesserebbe molto delle dimensioni binarie, a meno che non fosse abbastanza drammatico. Forse un'altra preoccupazione potrebbe essere l'efficienza energetica
barrymac,

Risposte:


29

Non sarai in grado di compilare tutto con icc. Molti programmi là fuori usano estensioni GCC al linguaggio C. Tuttavia Intel ha fatto molti sforzi per supportare la maggior parte di queste estensioni; ad esempio, le versioni recenti di icc possono compilare il kernel Linux.

Gentoo è davvero la soluzione migliore se ti piace ricompilare il tuo software in un modo insolito. La pagina icc sulla wiki di Gentoo descrive i principali ostacoli.

Prima fai un'installazione di base di Gentoo e emerge icc. Non rimuovere icc in seguito, purché nel sistema sia stato compilato un file binario con icc. Si noti che icc è installato in /opt; se questo non è sulla tua partizione di root, dovrai copiare le librerie icc sulla tua partizione di root se uno qualsiasi dei programmi utilizzati all'avvio viene compilato con icc.

Imposta /etc/portage/bashrce dichiara le tue opzioni di compilazione preferite; vedere la wiki di Gentoo per uno script più completo che supporti la creazione di pacchetti diversi con compilatori diversi (questo è necessario perché icc rompe alcuni pacchetti).

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"

13

Sarebbe sicuramente un'esperienza interessante. Ricompilare un'intera distro Linux usando un compilatore alternativo non sarebbe comunque semplice. Molti pacchetti essenziali dipendono da GCC e da altri programmi di utilità GNU toolchain.

Sarebbe possibile utilizzare un compilatore alternativo per quei pacchetti che non richiedono GCC per creare un ibrido. Potrebbe essere possibile sostituire i pacchetti dipendenti da GCC con altri che potrebbero essere compilati con il compilatore, ma nella maggior parte dei casi non ci sono troppe alternative. Dove ci sono, dovrai determinare se tali alternative saranno altrettanto funzionali all'uso previsto.

La vera domanda però è: ne varrebbe la pena? Se si sta tentando di creare un sistema incorporato, un compilatore alternativo potrebbe produrre file binari più piccoli. Se si crea un cluster di calcolo, è possibile ottenere un'esecuzione più rapida del codice. Se stai costruendo un desktop, otterrai un'ottima esperienza di apprendimento.

Penso che alla fine (supponendo che tu stia costruendo un desktop) scoprirai che ciò che molti utenti di distro di sorgente decidono alla fine: la quantità di tempo impiegata per l'ottimizzazione, la costruzione e la ricostruzione supera di gran lunga il tempo risparmiato da un'esecuzione più veloce del codice. Questo non vuol dire che non dovrebbe essere fatto - potrebbe essere abbastanza divertente. Se lo fai, questo sito sarebbe un ottimo posto per trovare risposte e documentare i tuoi sforzi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.