УНИТе

Портал > Документация > Инсталиране и използване на алтернативни версии на GCC компилаторите под CentOS 7

Инсталиране и използване на алтернативни версии на GCC компилаторите под CentOS 7

Съдържание:

  1. Предварителна информация
  2. Инсталиране на пакетите
  3. Настройки за достъп до избрана версия на GCC компилатора (от потребителя)
  4. Деактивиране на настройките за достъп до избраната версия на GCC компилатора (от потребителя)

 

1. Предварителна информация

По подразбиране, стандартните пакетни хранилища за CentOS 7 предлагат единствено версия 4.8.5 на колекцията GCC компилатори. Освен това, до края на живота на CentOS 7, не се очаква в тези хранилища да се появи по-нова версия на GCC. Това не означава, че по-нови версии на GCC компилаторите не могат да бъдат инсталирани в система, която работи под CentOS 7. Специалното допълнително хранилище за CentOS 7, наименовано SCL, предлага за инсталиране версии 6, 7, и 8 на GCC компилаторите. За препоръчване е да бъде инсталирана последната предлагана версия (в случая това е 8-ма). Не бива да се предприема ръчно опростено компилиране на GCC и продукта да се поставя достъпен за потребителите, които да го използват за да компилират софтуер, който да изпълняват върху възлите на HPC инфраструктурата. Причината е, че всяка Linux дистрибуция има специфичен набор зависимости, най-вече такива, свързани със системни библиотеки и ако тези зависимости не бъдат специфично удовлетворени чрез сложна първоначална конфигурация на компирането на изходния код на GCC, има вероятност така компилираните компилатори да създават проблемен или неоптимизиран изпълним код, който да доведе до свръхизползване на памет или процесорно време.

 

2. Инсталиране на пакетите

Първо се инсталира пакета с хранилищни настройки:

$ sudo yum install centos-release-scl

и след това съответната версия на компилаторите (една или повече от тях - възможно е и всичките посочени):

  • GCC 8 (точната версия е 8.3.1):

    $ sudo yum install devtoolset-8-gcc-c++ devtoolset-8-gcc-gfortran devtoolset-8-gcc-gdb-plugin devtoolset-8-make devtoolset-8-memstomp devtoolset-8-perftools devtoolset-8-strace devtoolset-8-gdb devtoolset-8-libgccjit devtoolset-8-ltrace devtoolset-8-systemtap-testsuite devtoolset-8-toolchain
  • GCC 7 (точната версия е 7.3.1):

    $ sudo yum install devtoolset-7-gcc-c++ devtoolset-7-gcc-gfortran devtoolset-7-gcc-gdb-plugin devtoolset-7-make devtoolset-7-memstomp devtoolset-7-perftools devtoolset-7-strace devtoolset-7-gdb devtoolset-7-libgccjit devtoolset-7-ltrace devtoolset-7-systemtap-testsuite devtoolset-7-toolchain
  • GCC 6 (точната версия е 6.3.1):

    $ sudo yum install devtoolset-6-gcc-c++ devtoolset-6-gcc-gfortran devtoolset-6-gcc-gdb-plugin devtoolset-6-make devtoolset-6-memstomp devtoolset-6-perftools devtoolset-6-strace devtoolset-6-gdb devtoolset-6-libgccjit devtoolset-6-ltrace devtoolset-6-systemtap-testsuite devtoolset-6-toolchain
  • GCC 5 (точната версия е 5.3.1):

    $ sudo yum install devtoolset-4-gcc-c++ devtoolset-4-gcc-gfortran devtoolset-4-gcc-gdb-plugin devtoolset-4-memstomp devtoolset-4-perftools devtoolset-4-strace devtoolset-4-gdb devtoolset-4-libgccjit devtoolset-4-ltrace devtoolset-4-systemtap-testsuite devtoolset-4-toolchain
  • GCC 4.9.2:

    $ sudo yum install devtoolset-3-gcc-c++ devtoolset-3-gcc-gfortran devtoolset-3-memstomp devtoolset-3-perftools devtoolset-3-strace devtoolset-3-gdb devtoolset-3-ltrace devtoolset-3-systemtap-testsuite devtoolset-3-toolchain

 

3. Настройки за достъп до избрана версия на GCC компилатора (от потребителя)

За да може даден потребител на HPC инфраструктурата да използва една от инсталираните допълнителни версии на GCC компилаторите, той трябва да изпълни следния команден ред:

  • GCC 8 (точната версия е 8.3.1):

    $ scl enable devtoolset-8 bash
  • GCC 7 (точната версия е 7.3.1):

    $ scl enable devtoolset-7 bash
  • GCC 6 (точната версия е 6.3.1):

    $ scl enable devtoolset-6 bash
  • GCC 5 (точната версия е 5.3.1):

    $ scl enable devtoolset-4 bash
  • GCC 4.9.2:

    $ scl enable devtoolset-3 bash

ВНИМАНИЕ! Изпълнението на тези командрни редове води до промяна на стойносите на променливите на средата, които обаче се извършват в нова сесия на bash.

Тази нова версия на bash онаследява променливите на предишната (без да я спира обаче) и добавя към тях нови стойности, свързани с пътищата към новите директории, в които се намират заявените за използване версии на GCC компилаторите. Освен това, инструментът scl променя съдържанието на някои директории, използвайки друго копие на съдържанието в тези директории. Това означава, че библиотеките на други версии на компилаторите, освен заредената, може да не бъдат достъпни!

 

4. Деактивиране на настройките за достъп до избраната версия на GCC компилатора (от потребителя)

След като потребителят е активирал достъпа до желаната от него версия на GCC компилаторите, използвайки инструкциите, дадени по-горе и е завършил процеса на компилация на изходния програмен код, той няма нужда повече да използва специално стартираната за целта сесия на bash. За да бъде прекратена тя, той трябва да изпълни:

$ exit

или да натисне Ctrl-D.

 


Последна актуализация: 6 октомври 2019

2019 УНИТе, Веселин Колев