Как переключить версию arm-linux-gnueabihf-gcc?

Я хотел бы использовать версию 5 из arm-linux-gnueabihf-gcc.

Поэтому я установил его через:

apt-get install gcc-5-arm-linux-gnueabihf

Но теперь, когда я сделаю gcc --version, он скажет мне, что это версия 7.

Как мне сказать, чтобы использовать старую версию?

Или я должен полностью удалить более новую версию?

1
задан 19 June 2019 в 23:01

1 ответ

Вы можете запустить arm-linux-gnueabihf-gcc-5 вместо gcc.

Этот список файлов включает в себя имена других инструментов, которые пакет gcc-5-arm-linux-gnueabihf размещает в /usr/bin, что может оказаться полезным. (Вы не упомянули, какую версию вы используете, но я предполагаю, что это 18.04, так как эта версия является популярной LTS и по умолчанию используется версия 7.)

Обратите внимание, что даже если вы хотите использовать версия по умолчанию, если вы не изменили то, на что указывает /usr/bin/gcc (что я не рекомендую), команда gcc запускает компилятор GCC, который генерирует собственные исполняемые файлы . Это не будет компилятор ARM, если ваша система Ubuntu не работает на ARM. Чтобы запустить версию кросс-компилятора GCC для armhf по умолчанию, используйте arm-linux-gnueabihf-gcc (и см. этот список файлов ).

Несколько версий как нативных, так и кросс-компиляторов могут быть установлены в одной системе одновременно. Однако с помощью команды gcc обычно вызывается только версия по умолчанию собственного компилятора GCC. Другие команды имеют префикс цепочки инструментов, суффикс версии или (в данном случае) обе. Это тот случай , даже , когда этот компилятор не по умолчанию является единственным компилятором, установленным в системе.

Если вам действительно нужно gcc вызвать этот компилятор ...

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

С учетом сказанного, если предположить, что ваша система Ubuntu не является системой armhf, но вы все еще действительно хотите, чтобы gcc запускал кросс-компилятор arm-linux-gnueabihf-gcc-5, у вас есть несколько опции. Вы можете заменить символическую ссылку /usr/bin/gcc (которая 18.04 ссылается на gcc-7), но я рекомендую против этого. Это может привести к поломке всего, что предполагает, что gcc является собственным компилятором, и может либо мешать, либо отменяться будущими операциями по управлению пакетами.

Вместо этого вы могли бы поместить символическую ссылку gcc на arm-linux-gnueabihf-gcc-5 в каталоге приватных бинов вашего пользователя ~/bin. Стандартный файл ~/.profile для каждого пользователя добавляет этот каталог в $PATH при входе в систему, если каталог существует. Автоматические сборки (например, когда вы запускаете ./configure или cmake .., а затем make), которые вы не настраиваете, обычно используют cc, который по-прежнему будет символической ссылкой на собственный компилятор, поэтому это не должно нарушаться вещи.

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

1
ответ дан 19 June 2019 в 23:01

Другие вопросы по тегам:

Похожие вопросы: