Я хотел бы использовать версию 5 из arm-linux-gnueabihf-gcc
.
Поэтому я установил его через:
apt-get install gcc-5-arm-linux-gnueabihf
Но теперь, когда я сделаю gcc --version
, он скажет мне, что это версия 7.
Как мне сказать, чтобы использовать старую версию?
Или я должен полностью удалить более новую версию?
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
, который по-прежнему будет символической ссылкой на собственный компилятор, поэтому это не должно нарушаться вещи.
Лично я бы не хотел этого делать, потому что я сам запутался. Я предпочитаю, чтобы всегда было ясно, на какую платформу ориентирован мой компилятор, когда он кросс-компилятор.