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