9 февр. 2010 г.

Intel C++ Compiler в Archlinux

Несколько дней назад на хабре была статья как использовать ICC в gentoo. Все основные сведения, о том что это и для чего это нужно, можно узнать из неё, я лишь обобщу некоторые нюансы установки и использования ICC в арче.

Поставить его можно из AUR'a, однако на архитектуре x86_64 пакет не собрался из-за ошибки(?) в скрипте инсталлятора - неправильного определения архитектуры для бинарика распаковывающего rpm файлы.
Так что проще будет скачать модифицированный PKGBUILD.

Также в логе инсталлятора встречается ругань на слишком длинный серийный номер. Не знаю насколько это плохо, но файл лицензии я переименовал из NCOM_L_CMP__XXX-XXXXXXXX.lic просто в XXX-XXXXXXXX.lic.

Дальше сборка должна пройти без каких либо происшествий.
Кстати, скачать придется 767 мегабайт.


Следующим шагом предстоит настроить использование ICC в makepkg. Можно скачать патчи отсюда, а можно взять уже пропатченный скрипт и заменить им имеющийся в /usr/bin.

Пакеты собираемые с помощью ICC должны быть указаны в файле /etc/packages.icc просто как:
tar
python
mplayer-vdpau-nogui
gnome-mplayer-svn


Особые флаги компилятора сборки для пакетов указываются в /etc/packages.icc-cflags:
tar -O2 -xP -ip
python -O3 -xP -ip
mplayer-vdpau-nogui -O2 -xT -ip
gnome-mplayer-svn -O3 -xT -ip


Всё, можно качать pkgbuild'ы с aur'а и компилять.

Пока у меня собраны и нормально работают только указанные выше пакеты. Bzip2 и gzip не собираются, libarchive и sqlite3 собираются и работают, но рушат некоторые важные службы и программы вроде pacman'a и sshd.

Вообще лучше собирать те программы которые не потребуется пускать от рута.

Конкретных данных о приросте производительности привести не могу, но точно могу сказать, что видео в mplayer'е при снятии с паузы стало подтормаживать значительно меньше.

PS: будьте готовы к тому, что двухдневная щетина на лице после выполнения вышеописанных действий внезапно превратится в шестидневную буквально за пару часов :)

PPS: однако надо еще попробовать флаг -march=native для gcc, утверждается что будет не хуже чем icc.

UPD от 11.02.2010:
Так и знал, что что-то забуду..
Нужно ведь еще добавить icc к списку BUILDENV в /etc/makepkg.conf
Например:
BUILDENV=(icc fakeroot !distcc color !ccache)