Installieren Sie crossbuild-essential-armhf auf amd64

Installieren Sie crossbuild-essential-armhf auf amd64

Während ich gerade an meinem Laptop (amd64) arbeite, kann ich bereits Code über SSH auf einem BeagleBone (armhf) kompilieren.

Was ich jetzt versuche, ist, jede beliebige IDE zum Debuggen dieses Codes verwenden zu können (Code::Blocks, KDevelop oder Qt Creator).

Ich dachte also daran, es gdbserverauf BeagleBone laufen zu lassen und mich damit zu verbinden, aber es gibt mir bei der Antwort einen Fehler mit unerwartetem Wert. Ich habe darüber gelesen und es scheint, dass ich lokal eine ausführbare Armhf-Datei erstellen muss, um es gdbverarbeiten zu können. Aber ich schätze, es braucht auch eine Armhf-orientierte gdbVersion für amd64, also habe ich versucht, es zu installieren crossbuild-essential-armhf. Dafür habe ich die Armhf-Architektur mit hinzugefügt dpkg --add-architecture armhf, 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 außerdem die richtige Methode zum Remote-Debuggen mit einer anderen Architektur oder gibt es eine bessere Möglichkeit, dies zu tun?

Antwort1

Ubuntu verwendet separate Repos für armh (dh http://ports.ubuntu.com/). Um crossbuild-essential-armhf erfolgreich installieren zu können, müssen Sie diese Schritte befolgen:

  1. laufendpkg --add-architecture armhf

  2. /etc/apt/sources.listGeben Sie für ALLE Ihre Apt-Deb-Zeilen in und die richtige Architektur an /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. ausführen apt-get update 4. ausführenapt-get install crossbuild-essential-armhf

Schauen Sie sich anhttps://wiki.debian.org/Multiarch/HOWTO

Möglicherweise möchten Sie diese Befehle auch in einem Chroot (oder vielleicht einem Docker-Container) ausführen, wie in diesem Handbuch beschrieben:Erste Schritte mit MultiArch (armel / armhf) in Ubuntu

Antwort2

Hier gibt es eine große Auswahl an Docker-basierten Cross-Compilern:

https://github.com/dockcross/dockcross

Antwort3

Es ist nicht notwendig, armhf zu den Dpkg-Quellen des Build-Hosts hinzuzufügen. Ein anderer Ansatz ist die Verwendung eines Chroots, das mit debootstrap oder einem beagleboard.org-Image gefüllt werden kann.

Eine ausführliche Anleitung zur C++-Cross-Kompilierung mit Remote-GDB-symbolischem Debuggen mit VS Code finden Sie unter:

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

verwandte Informationen