Установить crossbuild-essential-armhf на amd64

Установить crossbuild-essential-armhf на amd64

Прямо сейчас, работая на своем ноутбуке (amd64), я уже могу компилировать код через SSH на BeagleBone (armhf).

Сейчас я пытаюсь добиться возможности использовать любую IDE для отладки этого кода (Code::Blocks, KDevelop или Qt Creator).

Итак, я думал запустить gdbserverна BeagleBone и подключиться к нему, но он выдает мне ошибку неожиданного значения при ответе. Я читал об этом, и, похоже, мне нужно локально собрать исполняемый файл armhf для gdbобработки. Но я полагаю, что ему также нужна ориентированная на armhf gdbсборка для amd64, поэтому я попытался установить crossbuild-essential-armhf. Для этого я добавил архитектуру armhf с помощью dpkg --add-architecture armhf, но тогда я не могу выполнить обновление apt-get. Я получаю много таких:

Err http://security.ubuntu.com trusty-security/main armhf Packages             
  404  Not Found [IP: 2001:67c:1562::13 80]

Если я проверю репозитории, то там действительно нигде нет armhf.

Так что я делаю не так? Также, это правильный способ удаленной отладки с другой архитектурой или есть какой-то лучший способ?

решение1

Ubuntu использует отдельные репозитории для armh (т.е. http://ports.ubuntu.com/). Чтобы успешно установить crossbuild-essential-armhf, вам необходимо выполнить следующие шаги:

  1. бегатьdpkg --add-architecture armhf

  2. укажите правильную архитектуру для ВСЕХ ваших строк apt deb в /etc/apt/sources.listи /etc/apt/sources.list.d, например:

    deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe
    deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
    

Обратите внимание, что для строк deb-src указывать архитектуру не имеет смысла. 3. запуск apt-get update 4. запускapt-get install crossbuild-essential-armhf

Посмотри наhttps://wiki.debian.org/Multiarch/HOWTO

Вы также можете выполнить эти команды в chroot (или, возможно, в контейнере Docker), как указано в этом руководстве:Начало работы с MultiArch (armel / armhf) в Ubuntu

решение2

Здесь представлен богатый выбор кросс-компиляторов на базе Docker:

https://github.com/dockcross/dockcross

решение3

Не обязательно добавлять armhf в исходники dpkg хоста сборки. Другой подход — использовать chroot, который можно заполнить с помощью debootstrap или из образа beagleboard.org.

Подробное руководство по кросс-компиляции C++ с удаленной символьной отладкой GDB с помощью VS Code см. здесь:

https://takeofftechnical.com/x-compile-cpp-bbb

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