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 intento hacer ahora es poder usar cualquier IDE para depurar ese código (Code::Blocks, KDevelop o Qt Creator).
Entonces, pensé en ejecutar gdbserver
en BeagleBone y conectándome 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
para procesar. Pero supongo que también necesita un gdb
orientado a armhf creado para amd64, así que intenté instalar crossbuild-essential-armhf
. Para eso, agregué la arquitectura armhf con dpkg --add-architecture armhf
, pero luego no puedo hacer 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 depurar remotamente con una arquitectura diferente o hay alguna forma mejor de hacerlo?
Respuesta aceptada:
Ubuntu usa repositorios separados para armh (es decir, http://ports.ubuntu.com/
).
Para poder instalar crossbuild-essential-armhf con éxito, debe seguir estos pasos:
-
ejecute
dpkg --add-architecture armhf
-
especifique la arquitectura correcta para TODAS sus líneas apt deb 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. ejecute apt-get update
4. ejecute apt-get install crossbuild-essential-armhf
Eche un vistazo a https://wiki.debian.org/Multiarch/HOWTO
También es posible que desee ejecutar estos comandos en un chroot (o tal vez en un contenedor docker) como se menciona en esta guía:Primeros pasos con MultiArch (armel / armhf) en Ubuntu