Обновление gcc для определенной учетной записи пользователя

Обновление gcc для определенной учетной записи пользователя

Я работаю на вычислительном кластере под управлением CentOS6/RHEL6, который я совместно использую примерно со 100 другими пользователями и которым управляет один ИТ-администратор.

Недавно я начал писать на C++, и часть моего кода зависит от C++11. Согласноэта веб-страница, C++11 поддерживается gccверсиями 4.8.1 и выше.

К сожалению, вычислительный кластер имеет версию 4.4.7.

Некоторое время назад, по другой причине, я попытался установить gccверсию 4.8.4 в папку под моим домашним каталогом на кластере. Установка не удалась, сэто сообщение об ошибке. Некоторое гугление привело меня к мысли, что мне следует обновить glibc, поэтому я попытался установить более новую версию в свой домашний каталог. Этопровалился драматично.

Мой ИТ-администратор пришел к выводу: «Вероятно, не получится изменить версию gccна кластере». Прежде чем я начну надоедать ей новыми вопросами (потому что на этом этапе януждатьсяобновленная версиянекоторыйКомпилятор C), я собираю эти данные с помощью краудсорсинга:

(1) gccВозможна ли установка версии 4.8.1+ на мою учетную запись? (После того, как я попытался сделать это в последний раз, некоторые люди сказали, что это в корне плохая идея.)

(2) Если ответ на (1) да, какие меры предосторожности мне следует предпринять на этот раз, чтобы убедиться, что установка прошла успешно? glibcНеобходима ли установка на мою учетную запись? Это осуществимо?

(3) Если ответ на вопрос (1) «нет», сможет ли мой ИТ-администратор установить более новую версию для gccвсей системы, не нарушая код, который зависит от уже существующей версии?

(4) Если ни одно из вышеперечисленного не осуществимо для gcc, изменится ли ситуация с другим компилятором C?

Подводя итог, я ищу человека со знанием gcc(или другого компилятора C), который объяснит, как человек (без sudoполномочий) мог бы его обновить, если это возможно.

решение1

Мне удалось собрать GCC 4.8.5 из исходников в домашнем каталоге на Centos 6.7. Я использую дистрибутив glibc; мне не пришлось собирать glibc.

Предостережение: Я делаю это в системе, где установлены зависимости сборки для исходного пакета GCC 4.4.x дистрибутива, а также пакет libmpc-develиз репозитория epel. Если они отсутствуют, вам, возможно, придется сначала собрать их из исходного кода в домашнем каталоге и каким-то образом изменить процесс сборки gcc, чтобы использовать их оттуда (если это вообще возможно).

Строительство ССЗ:

  1. Захватить исходный код GCC

    curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    
  2. Извлекать

    tar xf gcc-4.8.5.tar.bz2
    
  3. Создайте каталог сборки вне исходного каталога GCC и перейдите в него.

     mkdir build && cd build
    
  4. Настроить. Я сделал:

     ../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \
                            --enable-checking=release --enable-languages=c,c++,fortran \
                            --disable-multilib --program-suffix=-4.8
    
  5. Сборка. У меня 4 ядра, поэтому я сделал:

     make -j 5
    
  6. Установить

     make install
    
  7. Теперь я могу скомпилировать и запустить тестовый код.

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    

решение2

Относительно Ваших конкретных вопросов:

(1) Да, это осуществимо, но может быть неинтересно.

(2) Нет, обычно можно использовать системный glibc. Из gcc нужно libstdc++и libgccт.д.

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

На самом деле я бы не стал заморачиваться с версией 4.8 и перешел бы сразу к одной из текущих серий релизов (5.2 или 4.9).

Примечание: я сам не производил установку gcc без полномочий root, но работаю с системами, которые поддерживают различные версии gcc в качестве модулей gnu.

Связанный контент