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