Как скомпилировать старую версию GCC под Debian?

Учитывая каноническое имя пути, такое как ваше, это будет работать:

set -f --; IFS=/
for p in $pathname
do    [ -e "$*/$p" ] || break
      set -- "$@" "$p"
done; printf %s\\n "$*"

Это печатает через последний полностью существующий/доступный компонент $pathname, и помещает каждый из них отдельно в массив arg. Первый несуществующий компонент не печатается, но сохраняется в $p.

Вы можете подойти к этому противоположно:

until cd -- "$path" && cd -
do    case   $path  in
      (*[!/]/*)
              path="${path%/*}"
;;    (*)   ! break
      esac
done  2>/dev/null   && cd -

Это либо вернется соответствующим образом, либо разделит $path на части по мере необходимости. Он откажется от попытки изменить /, но в случае успеха выведет в stdout как ваш текущий рабочий каталог, так и каталог, в который он изменится. Ваш текущий $PWD также будет помещен в $OLDPWD.

0
08.04.2019, 01:28
1 ответ

Ваш GCC не использует право as,и, вероятно, не стал бы использовать право ld; вам нужно добавить

--with-as=/usr/bin/arm-none-eabi-as --with-ld=/usr/bin/arm-none-eabi-ld

на вашу линию ./configure.

Вы также можете столкнуться с проблемами, связанными с многоуровневым -подходом Debian, который GCC 5 не поддерживает напрямую. Лучше всего загрузить последний пакет Debian GCC 5.5 в виде исходного кода и использовать его (с исправлениями )для создания кросс-компилятора -. Затем он будет использовать библиотеку ARM C, которая была установлена ​​как зависимость от установленного вами пакета cross -GCC.

dget https://snapshot.debian.org/archive/debian-debug/20180412T094604Z/pool/main/g/gcc-5/gcc-5_5.5.0-12.dsc
cd gcc-5-5.5.0
debian/rules patch

затем настройте и соберите, как раньше. (Игнорировать перекрестную -документацию по сборке в debian/README.cross.)

2
28.01.2020, 02:30

Теги

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