In questo momento, mentre lavoro sul mio laptop (amd64), posso già compilare codice tramite SSH su un BeagleBone (armhf).
Quello che sto cercando di fare ora è essere in grado di utilizzare qualsiasi IDE per eseguire il debug di quel codice (Code::Blocks, KDevelop o Qt Creator).
Quindi, ho pensato di eseguire gdbserver
su BeagleBone e mi connetto ad esso, ma mi dà un errore di valore imprevisto alla risposta. L'ho letto e sembra che sia necessario creare localmente un eseguibile armhf, per gdb
processare. Ma immagino che necessiti anche di un gdb
orientato a armhf creato per amd64, quindi ho provato a installare crossbuild-essential-armhf
. Per questo, ho aggiunto l'architettura armhf con dpkg --add-architecture armhf
, ma poi non sono in grado di eseguire un aggiornamento apt-get. Ne ricevo moltissimi:
Err http://security.ubuntu.com trusty-security/main armhf Packages
404 Not Found [IP: 2001:67c:1562::13 80]
Se controllo i repository, in effetti non hanno armhf da nessuna parte.
Allora, cosa sto sbagliando? Inoltre, è questo il modo corretto per eseguire il debug remoto con un'architettura diversa o c'è un modo migliore per farlo?
Risposta accettata:
Ubuntu usa repository separati per armh (cioè http://ports.ubuntu.com/
).
Per poter installare correttamente crossbuild-essential-armhf devi seguire questi passaggi:
-
esegui
dpkg --add-architecture armhf
-
specifica l'architettura corretta per TUTTE le tue righe di apt deb in
/etc/apt/sources.list
e/etc/apt/sources.list.d
, ad esempio:deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
Nota che non ha senso specificare l'arco per le righe deb-src.
3. esegui apt-get update
4. esegui apt-get install crossbuild-essential-armhf
Dai un'occhiata a https://wiki.debian.org/Multiarch/HOWTO
Potresti anche voler eseguire questi comandi in un chroot (o forse un contenitore docker) come menzionato da questa guida:Guida introduttiva a MultiArch (armel / armhf) in Ubuntu