Czy można skompilować pełny system Linux za pomocą kompilatora Intela zamiast GCC?


26

Może występują problemy ze zgodnością?

Mam wrażenie, że w przypadku systemów opartych na procesorach Intel kompilator Intela mógłby potencjalnie wykonać lepszą robotę niż GCC. Być może istnieje już dystrybucja, która próbowała tego dokonać?

Sądzę, że używanie Gentoo może być całkiem proste.


4
Kilka dobrych informacji tutaj, które powinienem był znaleźć wcześniej! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

5
Muszę się zastanawiać nad twoim założeniem: w jaki sposób oceniasz, który kompilator wykonuje „lepszą robotę”? Szybsze wykonanie kodu? Mniejsze pliki binarne? Szybszy czas kompilacji?
Eli Heady

1
Najpierw sprawdziłbym go na szybszym kodzie, a na drugim mniejszych plikach binarnych, ale tak naprawdę nie dbałbym o rozmiar binarny, chyba że byłby to dość dramatyczny. Być może kolejnym problemem może być efektywność energetyczna
barrymac

Odpowiedzi:


29

Nie będziesz w stanie skompilować wszystkiego za pomocą ICC. Wiele programów używa rozszerzeń GCC do języka C. Jednak Intel dołożył wszelkich starań, aby obsłużyć większość tych rozszerzeń; na przykład najnowsze wersje icc mogą kompilować jądro Linuksa.

Gentoo jest rzeczywiście najlepszym rozwiązaniem, jeśli lubisz przekompilować swoje oprogramowanie w niecodzienny sposób. Strona ICC na wiki Gentoo opisuje główne przeszkody.

Najpierw wykonaj podstawową instalację Gentoo i emerge icc. Nie usuwaj icc później, o ile masz skompilowane pliki binarne z icc w twoim systemie. Zauważ, że icc jest zainstalowany w /opt; jeśli nie ma tego na partycji root, musisz skopiować biblioteki icc na partycję root, jeśli którykolwiek z programów używanych podczas uruchamiania jest skompilowany z icc.

Skonfiguruj /etc/portage/bashrci zadeklaruj swoje ulubione opcje kompilacji; zajrzyj na wiki Gentoo, aby uzyskać dokładniejszy skrypt, który obsługuje budowanie różnych pakietów z różnymi kompilatorami (jest to konieczne, ponieważ icc psuje niektóre pakiety).

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

13

To byłoby z pewnością interesujące doświadczenie. Ponowna kompilacja całej dystrybucji Linuksa za pomocą alternatywnego kompilatora nie byłaby jednak łatwa. Wiele niezbędnych pakietów zależy od GCC i innych narzędzi GNU toolchain.

Byłoby wykonalne użycie alternatywnego kompilatora dla tych pakietów, które nie wymagają GCC do stworzenia hybrydy. Może być możliwe zastąpienie pakietów zależnych od GCC innymi, które byłyby budowane za pomocą kompilatora, ale w większości przypadków nie ma zbyt wielu alternatyw. Tam, gdzie są, musisz ustalić, czy te alternatywy będą równie funkcjonalne dla zamierzonego zastosowania.

Prawdziwe pytanie brzmi jednak: czy byłoby warto? Jeśli próbujesz zbudować system osadzony, alternatywny kompilator może generować mniejsze pliki binarne. Jeśli budujesz klaster obliczeniowy, możesz uzyskać szybsze wykonanie kodu. Jeśli budujesz pulpit, uzyskasz wspaniałe wrażenia z nauki.

Myślę, że ostatecznie (zakładając, że budujesz pulpit) okaże się prawdą to, co ostatecznie decyduje wielu użytkowników dystrybucji źródłowej: ilość czasu poświęconego na optymalizację, budowę i przebudowę znacznie przewyższa czas zaoszczędzony przez szybsze wykonanie kodu. Nie oznacza to, że nie należy tego robić - może być całkiem fajnie. Jeśli to zrobisz, ta strona będzie doskonałym miejscem do znalezienia odpowiedzi i udokumentowania swoich wysiłków.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.