Gerade jetzt, während ich an meinem Laptop (amd64) arbeite, kann ich bereits Code über SSH auf einem BeagleBone (armhf) kompilieren.
Was ich jetzt versuche, ist in der Lage zu sein, jede IDE zu verwenden, um diesen Code zu debuggen (Code::Blocks, KDevelop oder Qt Creator).
Also dachte ich daran, gdbserver
auszuführen auf dem BeagleBone und verbinde mich damit, aber es gibt mir bei der Antwort einen Fehler von unerwartetem Wert. Ich habe darüber gelesen und es scheint, dass ich lokal eine ausführbare armhf-Datei für gdb
erstellen muss herstellen. Aber ich denke, es braucht auch ein armhf-orientiertes gdb
gebaut für amd64, also habe ich versucht, crossbuild-essential-armhf
zu installieren . Dafür habe ich die armhf-Architektur mit dpkg --add-architecture armhf
hinzugefügt , aber dann kann ich kein apt-get update durchführen. Ich bekomme eine ganze Menge davon:
Err http://security.ubuntu.com trusty-security/main armhf Packages
404 Not Found [IP: 2001:67c:1562::13 80]
Wenn ich die Repos überprüfe, haben sie tatsächlich nirgendwo armhf.
Also, was mache ich falsch? Ist dies auch der richtige Weg zum Remote-Debuggen mit einer anderen Architektur, oder gibt es einen besseren Weg, dies zu tun?
Akzeptierte Antwort:
Ubuntu verwendet separate Repos für armh (z. B. http://ports.ubuntu.com/
).
Um crossbuild-essential-armhf erfolgreich installieren zu können, müssen Sie die folgenden Schritte ausführen:
-
Führen Sie
dpkg --add-architecture armhf
aus -
spezifizieren Sie die korrekte Architektur für ALLE Ihre apt-deb-Zeilen in
/etc/apt/sources.list
und/etc/apt/sources.list.d
, zum Beispiel:deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
Beachten Sie, dass es keinen Sinn macht, den Arch für deb-src-Zeilen anzugeben.
3. Führen Sie apt-get update
aus 4. Führen Sie apt-get install crossbuild-essential-armhf
aus
Sehen Sie sich https://wiki.debian.org/Multiarch/HOWTO
anSie können diese Befehle auch in einer Chroot (oder vielleicht einem Docker-Container) ausführen, wie in diesem Handbuch erwähnt:Erste Schritte mit MultiArch (armel / armhf) in Ubuntu