Cross-Compile perl-ARM
Ich bin versucht zu cross-kompilieren des perl-interpreter für ein ARM-Architektur (FriendlyARM Micro2440). Ich bin mit dem ARM-Linux-GCC-4.4.3 cross-compiler vom Hersteller zur Verfügung gestellt. Das board ist mit Linux 2.6.
War ich in der Lage, um cross-kompilieren eines einfachen "Hello World" - Anwendung erfolgreich, und es lief auf dem Zielcomputer.
Ich heruntergeladen habe die perl v5.12.3 Quelle. Ich war in der Lage zu tun, eine normale Kompilierung von perl für Ubuntu. Ich bin jetzt versucht, um eine cross-Kompilierung für ARM-board. Ich arbeite aus dem perl-5.12.3 - /Kreuz-Ordner in den source-download.
make patch
gelungen, aber wenn ich make perl
schlägt er mit dieser
LD_LIBRARY_PATH=/home/reed022/.local/share/Trash/files/perl-5.2.12.3 arm-linux-gcc -o miniperl \
gv.o toke.o perly.o pad.o regcomp.o dump.o util.o mg.o reentr.o mro.o hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o doop.o doio.o regexec.o utf8.o taint.o deb.o universal.o globals.o perlio.o perlapi.o numeric.o mathoms.o locale.o pp_pack.o pp_sort.o \
miniperlmain.o opmini.o perlmini.o -lnsl -ldl -lm -lcrypt -lutil -lc
LD_LIBRARY_PATH=/home/reed022/.local/share/Trash/files/perl-5.2.12.3 ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
./miniperl: 1: Syntax error: word unexpected (expecting ")")
Ich denke, der relevante Teil der Ausgabe ist das ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
Teil. Obwohl ich nicht sicher bin. Es scheint verwirrend für mich, dass die cross-compilation-Umgebung würde versuchen, führen Sie tests, da es für eine andere system als das, es ist gebaut auf.
Ich bin völlig verloren, wohin Sie gehen von hier aus. Die Leute, die ich gesprochen habe hatte noch nicht viel Erfahrung mit cross-kompilieren von Programmen.
UPDATE
Ich beschloss, löschen Sie die perl-source-Ordner und re-extrahieren Sie es, denken, dass die Vorherige Kompilierung von perl für die Ubuntu-host-Maschine gewesen sein könnte, messing mit der aktuellen cross-compilation. Ich bin jetzt immer eine andere, aber ähnliche Fehler.
`sh cflags "optimize='-O2'" generate_uudmap.o` -fexpensive-optimizations -fomit-frame-pointer -O2 -march=armv4 -mtune=strongarm1100 generate_uudmap.c
CCCMD = arm-linux-gcc -DPERL_CORE -c -fexpensive-optimizations -fomit-frame-pointer -O2 -march=armv4 -mtune=strongarm1100 -O2 -Wall
arm-linux-gcc -o generate_uudmap generate_uudmap.o -lnsl -ldl -lm -lcrypt -lutil -lc
./generate_uudmap uudmap.h bitcount.h
./generate_uudmap: 1: Syntax error: word unexpected (expecting ")")
make[1]: *** [bitcount.h] Error 2
make[1]: Leaving directory `/home/reed022/Downloads/perl-5.12.3'
make[1]: Entering directory `/home/reed022/Downloads/perl-5.12.3'
make[1]: *** No rule to make target `more'. Stop.
make[1]: Leaving directory `/home/reed022/Downloads/perl-5.12.3'
make: *** [perl] Error 2
- Nie Tat dies erfolgreich, aber möchten Sie vielleicht zu prüfen, das OpenEmbedded-Projekt. Bieten Sie ein build framework für die Erstellung von embedded-Linux-Distributionen. wiki.openembedded.net/index.php/Main_Page
- Das makefile ist ganz klar versuchen, zu laufen Ihre ARM-binaries auf Ihrem (Intel?) build-Maschine. (Ich vermute, dass die Magische Zahl entsprechen keiner der bekannten ausführbare Datei geben, so die shell versucht, führen Sie es als shell-Skript und gibt die seltsame Fehlermeldung, die Sie sehen). Es muss etwas falsch mit Ihrem cross-Kompilierungs-setup.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anscheinend ist der Weg zu cross-kompilieren von perl ist, es nicht zu tun unter dem Kreuz-Verzeichnis. Ich brauchte, um pass-flags zu Konfigurieren, um es einzurichten. Brauchte ich auch, um den setup-ARM-computer mit einem SSH-server (ich habe dropbear). Die flags, die ich benutzt habe sind
Der einfachste Weg, um cross-compile perl-arm ist die Verwendung perl-cross.
Alex Suykov entwickelt eine Reihe von patches für perl, die arbeitet, um die Voraussetzung zu haben, ein Ziel-Maschine zur Verfügung. Teil der Lösung ist zu vermeiden test machen, da der host nicht ausführen können, cross-kompilierten code sowieso.
Ich verwendet arm-unknown-linux-uclibcgnueabi als mein Ziel (an meinem buildroot toolchain), aber ansonsten sind die Anweisungen für perl 5.18.0 hat Prima funktioniert.
Alex zuletzt aktualisiert der github-repository on April 23, 2014, also dieses Projekt ist noch relativ aktiv.