Zusammenstellen meine C++ - code für die ARM-Architektur
Ich bin ein java-Entwickler. Ich habe einige C++ - code, um einige system-realted Anrufe. Dieser code kompiliert wird, die auf Intel-32-bit-Plattform mit GCC (ich habe Dateien) und es funktioniert auf regelmäßige Intel-basierten 32-bit-linux-Maschine. Jetzt muss ich laufen, diese auf einem linux-OS laufen auf den Marvell ARM-Prozessor. Wenn ich laden Sie die gemeinsam genutzte Objekte in java bekomme ich folgende Fehlermeldung.
nicht öffnen können shared object-Datei: Keine solche Datei oder das Verzeichnis (Mögliche Ursache: can ' T load IA 32-bit .so auf einem ARM-bit-Plattform)
Mir bitte sagen, wie dieses Problem zu beheben. Ich schaute auf die GCC-Optionen, und ich fand eine option angeben, die Architektur (-march=armv5) und ich kann nicht kompilieren mit dieser option.
Vielen Dank im Voraus.
- Benötigen Sie ein cross-compiler, oder einfach nur neu zu kompilieren auf Linux-ARM-system.
- Besuchen Sie ymorin.is-a-geek.org/hg/crosstool-ng liefert eine suite für die Erstellung von cross-Compilern für viele host-und Zielplattformen
- Auch crosstool-ng homepage: ymorin.is-a-geek.org/projects/crosstool
- Schon erwähnt, dass!?
- Nein, Sie verknüpft, um die mercurial-repository, Hasturkun Zusammenhang mit der Projekt-homepage.
- Holen Sie sich die codesourcery-compiler und cross-kompilieren Sie Ihr Programm (ersetzen von gcc-arm-none-linux-gcc, etc in der makefile).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie mehr als nur ein Schalter, benötigen Sie ein cross-compiler. Sie können Ihre eigenen, aber wahrscheinlich der einfachste Weg ist :
Finden, die Entwicklungs-tools für dein board. Es kommt wohl mit einem Entwicklungs-kit, beinhaltet eine cross-compilation-toolchain
Wenn Sie nicht über diese, können Sie versuchen, installieren eines vorkompilierten die cross-Kompilierung wie die bereitgestellte, frei von CodeSourcery
Dann haben Sie, um den Speicherort Ihrer toolchain (Suche sowas wie den arm-none-linux-gnueabi-gcc) steht in Ihrem Pfad.
Cross-Compilierung einfaches Projekt ist dann einfach, überschreiben Sie die CC-variable im Makefile :
Versuchen Sie es mit der -mcpu=armv5-Schalter für den gcc.
hier ist das, was http://elinux.org/RPi_Software#ARM wiki:
-Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s