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

Прямо сейчас, работая на моем ноутбуке ( amd64), я уже могу скомпилировать код через ssh на beaglebone ( armhf). Сейчас я пытаюсь использовать любую IDE для отладки этого кода (кодовые блоки, kdevelop или qtcreator). Итак, я подумал о том, чтобы запустить gdbserver на beaglebone и подключиться к нему, но он дает мне неожиданную ошибку при ответе. Я читал об этом, и мне кажется, что мне нужно локально собрать исполняемый файл armhf для обработки GDB. Но я думаю, что для этого также нужен GDB, ориентированный на armhf, поэтому я попытался установить crossbuild-essential-armhf. Для этого я добавил архитектуру armhf с помощью dpkg --add-Architecture armhf, но затем я не могу выполнить обновление apt-get. Я получаю много таких:

Ошибка http://security.ubuntu.com/ пакеты trusty-security / main armhf
404 Не найдено [IP: 2001:67c:1562::13 80]

Если я проверю репозитории, у них действительно нет ни одного armhf... Итак, что я делаю не так? Кроме того, это правильный способ удаленной отладки с другой архитектурой, или есть ли лучший способ сделать это? Спасибо.

3 ответа

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

  1. бежать dpkg --add-architecture armhf
  2. укажите правильную архитектуру для ВСЕХ ваших подходящих строк 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 (или, возможно, в док-контейнере), как указано в этом руководстве: http://www.cnx-software.com/2012/05/02/getting-started-with-multiarch-armel-armhf-in-ubuntu/

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

https://github.com/dockcross/dockcross

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

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

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

Другие вопросы по тегам