2023年12月31日发(作者:)

PERL 移植到ARM(mini2440)过程详解

作者:万升级

日期:2011-11-30

使用的环境:

Host: Linux version 12.i686

安装i386 perl 5.10.0

交叉编译使用 源码

GCC: gcc version 4.4.2 (交叉编译环境由友善之臂提供的toolchain工具)

相关包下载

源码包:

交叉编译包:

/src/5.0/

/downloads183/ebook/

编译过程

上传包:

把上面下载的两个包上传到编译环境的同一个目录中,如:/home/swan/perl5

如下:

解压包:

tar -zxvf

解压包后,生成下面的一些文件

-rwxr-xr-x 1 swan epdev 808 2009-07-19 02:11 install

-rwxr--r-- 1 swan epdev 175088 2009-07-19 02:05

-rwxr-xr-x 1 swan epdev 9813068 2011-11-30 15:55

-rwxr-xr-x 1 swan epdev 15595020 2011-11-30 15:55

drwxr-xr-x 4 swan epdev 4096 2009-07-19 01:39 usr

修改安装配置文件install

vi install

修改前:

#!/bin/sh

#tar -xzvf $PKG/

#patch -Np0 -i

sed -i 's/arm-unknown-linux-gnu-/arm-926ejs-linux-/'

perl-5.10.0/Cross/Makefile

sed -i '/^PERL =/cPERL = ../miniperl-cross' perl-5.10.0/utils/

sed -i -e '/^generate_uudmap/cgenerate_uudmap$(EXE_EXT): generate_uudmap.c' -e

'/$(CC).*generate_uudmap/c gcc $(LDFLAGS) -o generate_uudmap generate_uudmap.c

$(libs)' perl-5.10.0/

sed -i -e 's/.perl installperl/.miniperl-cross installperl/'

-e '/$(MAKE) l/d'

-e '/.perl installman/c @echo installman $(DESTDIR)'

perl-5.10.0/

#mkdir -p $PKG/perl-5.10.0

#rm -rf $PKG/perl-5.10.0/*

#cd perl-5.10.0/Cross

#make ARCH=arm CROSS_COMPILE=arm-926ejs-linux-

#make DESTDIR=$PKG/perl-5.10.0 install

修改后:

#!/bin/sh

tar -xzvf $PKG/

patch -Np0 -i

sed -i 's/arm-unknown-linux-gnu-/arm-926ejs-linux-/'

perl-5.10.0/Cross/Makefile

sed -i '/^PERL =/cPERL = ../miniperl-cross' perl-5.10.0/utils/

sed -i -e '/^generate_uudmap/cgenerate_uudmap$(EXE_EXT): generate_uudmap.c' -e

'/$(CC).*generate_uudmap/c gcc $(LDFLAGS) -o generate_uudmap generate_uudmap.c

$(libs)' perl-5.10.0/

sed -i -e 's/.perl installperl/.miniperl-cross installperl/'

-e '/$(MAKE) l/d'

-e '/.perl installman/c @echo installman $(DESTDIR)'

perl-5.10.0/

cd perl-5.10.0/Cross

make ARCH=arm CROSS_COMPILE=arm-linux-

make DESTDIR=$PKG/perl-5.10.0 install

红色字体表示已修改过的,可以根据实际情况修改相应的路径和宏命令

执行脚本进行交叉编译

./install

在编译过程中如何出现一些错误,请检查install配置是否修改正确,特别是make ARCH=arm

CROSS_COMPILE=arm-linux-这个需要重点注意,还有就是路径一定要正确.

编译成功后,出现下面的内容

/usr/lib/perl5/5.10.0/pod/

/usr/lib/perl5/5.10.0/pod/

/usr/lib/perl5/5.10.0/pod/

installman /home/swan/perl5/perl-5.10.0/Cross/perl-5.10.0

make[2]: Leaving directory `/home/swan/perl5/perl-5.10.0'

make[1]: Leaving directory `/home/swan/perl5/perl-5.10.0'

[swan@devhost perl5]$

配置开发板内容

1) 编译成功后,把perl-5.10.0目录中生成的miniperl文件移植到开发板上的/bin目录下

并在开发板上建立链接:

Chmod +x miniperl //赋予可执行权限

ln –sf miniperl perl

//建立链接

2) 将解压 这个包所生成的usr目录中的lib/perl5/5.10.0 下的所有文件移植到开发板的/usr/lib/perl5/5.10.0中

3) 开发板上的移植工作已经完成.测试一下,是否安装成功, 运行perl –v检查 perl的版本信息

perl –v

出现以下的信息表示移植成功.

[root@FriendlyARM /bin]# perl -v

This is perl, v5.10.0 built for arm-linux

Copyright 1987-2007, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the

GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on

this system using "man perl" or "perldoc perl". If you have access to the

Internet, point your browser at /, the Perl Home Page.

Perl脚本测试以及错误解析

1) 编写perl测试脚本,测试arm板上的perl的基本功能。

如果其它perl的pm模块找不到, 需要自行添加到arm板上的@INC制定的路径下。

如下面的提示信息,就需要把这个模块拷贝到开发板的/usr/lib/perl5/5.10.0目录下即可.

Can't locate in @INC (@INC contains: /usr/lib/perl5/5.10.0/arm-linux

/usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/arm-linux /usr/lib/perl5/site_perl/5.10.0

/usr/lib/perl5/site_perl .) at ./ line 2.

BEGIN failed--compilation aborted at ./ line 2.

结束语

在此非常感谢网友的支持,他们共享资源,提供信息,特别感谢深圳的 武景彦工 他经过总结,开发出 这个包,帮助我们解决了很多的问题,希望这个文档能帮助当前遇到相关问题的朋友,如果这编译过程写得有不对的地方,还请大家批评指正,谢谢!

我的邮箱: wlxwsj@

QQ: 349056412

2011-11-30