Установите 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, вам необходимо выполнить следующие шаги:
- бежать
dpkg --add-architecture armhf
укажите правильную архитектуру для ВСЕХ ваших подходящих строк 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.
- бежать
apt-get update
- бежать
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:
Нет необходимости добавлять armhf в исходники dpkg хоста сборки. Другой подход заключается в использовании chroot, который можно заполнить с помощью debootstrap или из образа beagleboard.org.
Подробное руководство по кросс-компиляции C++ с удаленной символьной отладкой GDB с помощью VS Code см.: