Ich kompiliere einen Touchscreen-Treiber, der mit einer Ocaml-Kalibrierungsanwendung geliefert wird.
Ich versuche den Treiber und die Anwendung für ARM zu kompilieren, insbesondere das Beagleboard, auf dem Angström läuft.
Es geht so:
%Vor% Ich stecke in diesem Relocations in generic ELF (EM: 3)
Fehler fest.
Das Makefile sieht so aus:
%Vor% As /usr/local/angstrom/arm/environment-setup
belässt /usr/local/angstrom/arm/bin
als erstes Element meines PATH, ich habe versucht, einige Programme durch die ARM-Versionen zu ersetzen
Nach dem Ersetzen von as
kompilieren die Module jedoch nicht einmal
Ich bin mir ziemlich sicher, dass es ein sehr dummer Fehler sein muss, aber ich kann keine Dokumentation darüber finden, wie man das richtig macht. Weiß jemand, was scheitern könnte?
Der Quellcode des Treibers, den ich erstellen möchte, kann hier gefunden werden.
ocaml unterstützt derzeit keine Cross-Kompilierung, und die Übergabe der -cc-Option führt nicht dazu, dass es sich auf magische Weise kompiliert. Es gibt einige Patches, die das ermöglichen, aber nichts Offizielles. Ich erinnere mich an Patched ocamlopt und es funktionierte ok für einfache Programme. Aber in diesem Fall müssen Sie auch alle abhängigen Bibliotheken kompilieren, und dies kann eine ziemliche Aufgabe sein.
Ich denke, Ihre beste Lösung ist entweder:
nativ in arm qemu erstellen (das ist ziemlich einfach, es gibt vordefinierte Debian-Images verfügbar )
erstellt eine Bytecode-Binärdatei der Kalibrierungsanwendung (Bytecode ist portierbar zwischen Architekturen, erfordert aber die gleiche Version von ocaml auf dem Ziel) und installiert die erforderlichen Stub-Bibliotheken (diejenigen, die C-Code für Bindungen zu gtk, cairo, usw.) am Arm (nativ oder aus Paketen)
Es sieht so aus, als ob Sie nicht die gesamte Toolchain durch die Cross-Compilation Toolchain ersetzt haben. movl %eax,camlVersion
ist eine typische x86-Anweisung und nicht etwas, das Sie in ARM-Code sehen würden. Ich erhalte normalerweise Ihre Fehler, wenn ich vergesse, zwischen verschiedenen Code für unterschiedliche Architekturen zu putzen.
Tags und Links arm cross-compiling ocaml angstrom-linux touchscreen