Как использовать GCC 4.7 вместо 4.6?

8

Поэтому я работаю над проектом, и я хотел использовать некоторые функции C11 для C. Чтобы использовать эти функции, требуется GCC 4.7, поэтому я перешел к synaptic и посмотрел 4.7, и нашел пакеты gcc-4.7-base, поэтому я установил его [1].

Итак, теперь, когда gcc-4.7-base установлен, я ожидал, что смогу использовать 4.7, но нет, когда я это делаю, gcc --versionон все равно показывает 4.6.3 даже больше, когда я пытаюсь напрямую вызвать 4.7 (через /usr/bin/gcc-4.7), он не существует, хотя gcc-4.6исполняемый файл существует.

Как мне «активировать» GCC 4.7? Я читаю здесь , вы делаете сумасшедшие вещи update-alternatives, но это не работает для меня, поскольку gcc-4.7исполняемый файл на самом деле не существует на моей машине.

Примечания: 1. Я также увидел gcc-4.6-base, поэтому я решил удалить его, но synaptic попыталась удалить все установленные пакеты и установить среду выполнения Java, поэтому по понятной причине я решила не удалять ее.

Ларц Конвелл
источник

Ответы:

13

Следующее сработало для меня.

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --config gcc

Источник для справки

Джинсоп Ким
источник
Я не думаю, что это отвечает на вопрос, поскольку ОП специально сказал, что update-alternativesмаршрут не будет работать для них, так как у них не было доступного двоичного файла gcc-4.7. Действительно, попытка следовать инструкциям в этом ответе после установки gcc-4.7-base приводит к ошибке:update-alternatives: error: alternative path /usr/bin/gcc-4.7 doesn't exist.
waldyrious
0

gccДвоичный находится в gcc-X.Yпакете, а не gcc-X.Y-base. Последнее является зависимостью либо gcc-X.Yили libstdc++.

По сути, вы должны просто установить gcc-4.7и затем либо вызвать его как gcc-4.7из вашего make-файла, либо использовать, install-alternativesчтобы сделать его по умолчанию.

Дмитрий Григорьев
источник