我试图交叉编译用于ARM体系结构(FriendlyARM Micro2440)的perl解释器。我正在使用制造商提供的ARM-Linux GCC 4.4.3交叉编译器。该开发板正在运行Linux 2.6。
我能够成功地交叉编译基本的“Hello World”应用程序,并且该程序在目标计算机上运行。
我已经下载了perl v5.12.3源码。我能够为Ubuntu进行perl的常规编译。我现在正在尝试对ARM板进行交叉编译。我正在下载源代码中的perl-5.12.3/Cross文件夹。make patch
成功,但是当我运行make perl
时,此操作失败
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 ")")
我认为输出的相关部分是
./miniperl -w -Ilib -MExporter -e '<?>' || make minitest
部分。虽然我不确定。令我感到困惑的是,交叉编译环境将尝试运行测试,因为它所针对的系统不同于所构建的系统。我完全迷失了从这里去的路。我与之交谈的人在交叉编译程序方面经验不足。
更新
我决定删除perl源文件夹,然后重新解压缩它,以为先前针对Ubuntu主机的perl编译可能与当前的交叉编译搞混了。我现在遇到了一个不同但相似的错误。
`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
最佳答案
显然,交叉编译perl的方法不是在Cross目录下进行。我需要将标志传递给Configure进行设置。我还需要使用SSH服务器设置ARM计算机(我使用了dropbear)。我使用的标志是
sh ./Configure
-Dusecrosscompile
-Dtargethost=<IP of ARM computer>
-Dtargetuser=<user name>
-Dtargetarch=arm-linux
-Dcc=arm-linux-gcc
-Dusrinc=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/
-Dincpth=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include/
-Dlibpth=/opt/FriendlyARM/toolschain/4.4.3/lib
-Dtargetdir=/sdcard/perl
关于perl - 交叉编译Perl for ARM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464538/