No momento, enquanto trabalho no meu laptop (amd64), já consigo compilar código através de SSH em um BeagleBone (armhf).
O que estou tentando fazer agora é poder usar qualquer IDE para depurar esse código (Code::Blocks, KDevelop ou Qt Creator).
Então, pensei em rodar gdbserver
no BeagleBone e conectar-me a ele, mas me deu um erro de valor inesperado na resposta. Eu li sobre isso e parece que preciso construir localmente um executável armhf para gdb
processar. Mas acho que também precisa de um armhf gdb
desenvolvido para AMD64, então tentei instalar o crossbuild-essential-armhf
. Para isso, adicionei a arquitetura armhf com dpkg --add-architecture armhf
, mas não consigo fazer uma atualização do apt-get. Eu recebo muitos destes:
Err http://security.ubuntu.com trusty-security/main armhf Packages
404 Not Found [IP: 2001:67c:1562::13 80]
Se eu verificar os repositórios, eles realmente não têm armhf em lugar nenhum.
Então, o que estou fazendo de errado? Além disso, esta é a maneira correta de depurar remotamente com uma arquitetura diferente ou existe alguma maneira melhor de fazer isso?
Responder1
O Ubuntu usa repositórios separados para armh (ou seja, http://ports.ubuntu.com/
). Para poder instalar o crossbuild-essential-armhf com sucesso, você deve seguir estas etapas:
correr
dpkg --add-architecture armhf
especifique a arquitetura correta para TODAS as suas linhas apt deb em
/etc/apt/sources.list
e/etc/apt/sources.list.d
, por exemplo:deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
Observe que não faz sentido especificar o arco para linhas deb-src. 3. corra apt-get update
4. corraapt-get install crossbuild-essential-armhf
Dê uma olhada emhttps://wiki.debian.org/Multiarch/HOWTO
Você também pode executar esses comandos em um chroot (ou contêiner docker, talvez), conforme mencionado neste guia:Introdução ao MultiArch (armel/armhf) no Ubuntu
Responder2
Há uma grande variedade de compiladores cruzados baseados em Docker aqui:
Responder3
Não é necessário adicionar armhf às fontes dpkg do host de compilação. Outra abordagem é usar um chroot que pode ser preenchido usando debootstrap ou a partir de uma imagem beagleboard.org.
Para obter um guia completo sobre compilação cruzada de C++ com depuração simbólica remota de GDB com VS Code, consulte: