En este momento, mientras trabajo en mi computadora portátil (amd64), ya puedo compilar código a través de SSH en un BeagleBone (armhf).
Lo que estoy tratando de hacer ahora es poder usar cualquier IDE para depurar ese código (Code::Blocks, KDevelop o Qt Creator).
Entonces, pensé en ejecutar gdbserver
BeagleBone y conectarme a él, pero me da un error de valor inesperado en la respuesta. Leí sobre esto y parece que necesito construir localmente un ejecutable armhf para gdb
poder procesarlo. Pero supongo que también necesita una versión orientada a armhf gdb
diseñada para AMD64, así que intenté instalar crossbuild-essential-armhf
. Para eso, agregué la arquitectura armhf con dpkg --add-architecture armhf
, pero luego no puedo realizar una actualización de apt-get. Recibo muchos de estos:
Err http://security.ubuntu.com trusty-security/main armhf Packages
404 Not Found [IP: 2001:67c:1562::13 80]
Si reviso los repositorios, de hecho no tienen armhf en ninguna parte.
Entonces, ¿qué estoy haciendo mal? Además, ¿es esta la forma correcta de realizar la depuración remota con una arquitectura diferente o existe alguna forma mejor de hacerlo?
Respuesta1
Ubuntu usa repositorios separados para armh (es decir http://ports.ubuntu.com/
). Para poder instalar crossbuild-essential-armhf con éxito tienes que seguir estos pasos:
correr
dpkg --add-architecture armhf
especifique la arquitectura correcta para TODAS sus líneas deb apt en
/etc/apt/sources.list
y/etc/apt/sources.list.d
, por ejemplo:deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
Tenga en cuenta que no tiene sentido especificar el arco para las líneas deb-src. 3. correr apt-get update
4. correrapt-get install crossbuild-essential-armhf
Mira estohttps://wiki.debian.org/Multiarch/HOWTO
Es posible que también desee ejecutar estos comandos en un chroot (o tal vez en un contenedor acoplable) como se menciona en esta guía:Primeros pasos con MultiArch (armel/armhf) en Ubuntu
Respuesta2
Aquí hay una gran variedad de compiladores cruzados basados en Docker:
Respuesta3
No es necesario agregar armhf a las fuentes dpkg del host de compilación. Otro enfoque es utilizar un chroot que se puede completar usando debootstrap o desde una imagen de beagleboard.org.
Para obtener una guía completa sobre la compilación cruzada de C++ con la depuración simbólica remota de GDB con VS Code, consulte: