ARM的交叉编译perl

前端之家收集整理的这篇文章主要介绍了ARM的交叉编译perl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试交叉编译ARM体系结构的perl解释器( FriendlyARM Micro2440).我正在使用制造商提供的 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’<?>‘ ||做最小的一部分.虽然我不确定.对我来说,交叉编译环境会尝试运行测试似乎很困惑,因为它的目标是与构建它的系统不同的系统.

我完全迷失了,从这里开始.我与之交谈的人对交叉编译程序没有多少经验.

UPDATE
我决定删除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相关文章