Чи можливо скласти повну систему Linux за допомогою компілятора Intel замість GCC?


26

Можливо, є якісь проблеми сумісності?

У мене складається враження, що для систем, що базуються на Intel, компілятор Intel потенційно зробив би кращу роботу, ніж GCC. Можливо, вже є дистрибутив, який спробував це?

Я б подумав, що це може бути досить простим використанням Gentoo.


4
Тут є якась добра інформація, яку я повинен був знайти раніше! gentoo-wiki.info/HOWTO_ICC_and_Portage
barrymac

5
Мені потрібно замислитися над вашим приміщенням: як ви оцінюєте, який компілятор виконує "кращу роботу"? Швидше виконання коду? Менші бінарні файли? Швидше час складання?
Елі Хеді

1
Я б міг оцінити його на швидшому коді, по-перше, на менших двійкових файлах, вдруге, але не дуже би дбав про бінарний розмір, якщо він не був досить драматичним. Можливо, ще однією проблемою може стати енергоефективність
barrymac

Відповіді:


29

Ви не зможете зібрати все з icc. Багато програм там використовують розширення GCC на мові С. Однак Intel доклала багато зусиль, щоб підтримати більшість цих розширень; Наприклад, останні версії icc можуть компілювати ядро ​​Linux.

Gentoo - це справді найкраща ставка, якщо вам подобається перекомпілювати програмне забезпечення незвично. На сторінці icc на вікі Gentoo описані основні перешкоди.

Спочатку зробіть базову установку Gentoo та emerge icc. Не видаляйте icc пізніше, доки у вашій системі є будь-який двійковий файл, зібраний з icc. Зауважте, що icc встановлений у /opt; якщо цього немає на вашому кореневому розділі, вам потрібно буде скопіювати бібліотеки icc у свій кореневий розділ, якщо будь-яка з програм, що використовуються під час завантаження, компілюється з icc.

Налаштуйте /etc/portage/bashrcта оголосіть улюблені варіанти компіляції; див. у вікі Gentoo для більш ретельного скрипту, який підтримує побудову різних пакетів з різними компіляторами (це необхідно, оскільки icc ламає деякі пакети).

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

13

Це, безумовно, було б цікавим досвідом. Перекомпіляція всього дистрибутива Linux за допомогою альтернативного компілятора насправді не буде простою. Багато важливих пакетів залежать від GCC та інших утиліт GNU.

Доцільно використовувати альтернативний компілятор для тих пакетів, яким GCC не потребує створення гібриду. Можливо, можливо, замінити пакети, залежні від GCC, на інші, які створювали б ваш компілятор, але в більшості випадків не надто багато альтернатив. Там, де вони є, вам доведеться визначити, чи будуть ці альтернативи настільки ж функціональними для призначеного вами використання.

Справжнє питання, проте: чи варто було б цього? Якщо ви намагаєтеся побудувати вбудовану систему, альтернативний компілятор може створити менші бінарні файли. Якщо ви будуєте кластер обчислень, ви можете отримати швидше виконання коду. Якщо ви будуєте робочий стіл, ви отримаєте чудовий досвід навчання.

Я думаю, що врешті-решт (якщо припустити, що ви будуєте робочий стіл), ви дізнаєтесь правдою те, що багато хто з користувачів дистрибуторів джерела в кінцевому підсумку вирішує: кількість часу, витраченого на оптимізацію та побудову та відновлення, значно перевищує час, що заощаджується при швидшому виконанні коду. Це не означає, що цього не слід робити - це може бути дуже весело. Якщо ви це зробите, цей сайт стане чудовим місцем для пошуку відповідей та документування ваших зусиль.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.