Instale crossbuild-essential-armhf en amd64

Instale crossbuild-essential-armhf en amd64

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 gdbserverBeagleBone 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 gdbpoder procesarlo. Pero supongo que también necesita una versión orientada a armhf gdbdiseñ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:

  1. correrdpkg --add-architecture armhf

  2. especifique la arquitectura correcta para TODAS sus líneas deb apt en /etc/apt/sources.listy /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:

https://github.com/dockcross/dockcross

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:

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

información relacionada