Cross Compiler perl pour les BRAS
Je suis d'essayer de faire de la compilation croisée de l'interpréteur perl pour une architecture ARM (FriendlyARM Micro2440). Je suis à l'aide de la ARM-Linux GCC 4.4.3 cross-compilateur fourni par le fabricant. Le conseil d'administration est en cours d'exécution Linux 2.6.
J'ai été en mesure de cross-compiler une base application "Hello World" avec succès, et il a couru sur la machine cible.
J'ai téléchargé le perl v5.12.3 source. J'ai été capable de faire une activité normale de la compilation de perl pour Ubuntu. Je suis en train d'essayer de faire un cross-compilation pour les BRAS de conseil. Je fais de la perl-5.12.3/Croix-dossier dans le dossier source de téléchargement.
make patch
réussi, mais quand je lance make perl
il échoue avec cette
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 ")")
Je pense que la partie pertinente de la production est la ./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
partie. Si je ne suis pas sûr. Il semble confus pour moi que la croix-environnement de compilation voudrais essayer de faire des tests, car c'est le ciblage d'un autre système que celui qu'il est en cours de construction sur.
Je suis complètement perdu, comme l'endroit où aller à partir d'ici. Les personnes à qui j'ai parlé n'ont pas eu beaucoup d'expérience avec le cross-compiler des programmes.
Mise à JOUR
J'ai décidé de supprimer la source perl dossier et re-extraire, pensant que la précédente compilation de perl pour Ubuntu en machine hôte pourrait avoir été jouer avec le courant de la cross-compilation. Je suis maintenant une autre erreur similaire.
`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
Le makefile est clairement en essayant de lancer votre BRAS binaires sur votre (Intel?) construire la machine. (Je suppose que le nombre magique ne correspond à aucune connue fichier exécutable de type, de sorte que le shell tente de l'exécuter comme un script shell et donne l'erreur bizarre de vous voir). Il doit y avoir quelque chose de mal avec votre compilation croisée de l'installation.
OriginalL'auteur treed | 2011-03-28
Vous devez vous connecter pour publier un commentaire.
Apparemment, le chemin de croix de la compilation de perl n'est pas à faire sous les la Croix répertoire. J'avais besoin de passer des options pour Configurer le configurer. J'ai également nécessaire à l'installation du BRAS de l'ordinateur avec un serveur SSH (j'ai utilisé dropbear). Les drapeaux que j'ai utilisées sont
C'est parce que les développeurs Perl a eu l'excellente idée d'utiliser perl pour compiler l'interpréteur perl. Cette amorçage a bien fonctionné avec gcc (jamais eu de problèmes de compilation croisée). Et je pense que tout ce qui est en cours d'exécution sur l'autre ordinateur est les tests, mais je ne me souviens plus.
OriginalL'auteur treed
La façon la plus simple de cross-compiler perl pour les bras est d'utiliser perl-croix.
Alex Suykov développé un ensemble de correctifs pour perl qui fonctionne autour de l'exigence d'avoir une machine cible disponible. Une partie de la solution est d'éviter de faire de test depuis l'hôte ne peut pas exécuter de la croix-code compilé de toute façon.
J'ai utilisé arm-unknown-linux-uclibcgnueabi que ma cible (pour correspondre à mon buildroot de la chaîne), mais sinon les indications pour perl 5.18.0 a très bien fonctionné.
Alex dernière mise à jour le dépôt github sur avril 23, 2014, donc, ce projet est encore relativement active.
Merci. J'ai mis à jour le lien.
OriginalL'auteur Will Bickford