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

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

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

Итак, я установил его через:

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

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

Как мне заставить его использовать старую версию?

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

решение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. Другие команды имеют префикс toolchain, суффикс версии или (в данном случае) и то, и другое. Это случайдажекогда этот нестандартный компилятор является единственным компилятором, установленным в системе.

Если вам действительно необходимо 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 вашего пользователя ~/bin. Файл по умолчанию для каждого пользователя ~/.profile добавляет этот каталог в $PATHпри входе в систему, если каталог существует. Автоматизированные сборки (например, когда вы запускаете ./configureили cmake ..и затем make), которые вы не настраиваете, обычно используют cc, который по-прежнему будет символической ссылкой на собственный компилятор, так что это не должно ничего сломать.

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

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