perl源碼
Ⅰ 如何交叉編譯perl
先下載Perl源碼:https://www.perl.org/get.html , 下載版本是5.10.1
下載Perl交叉編譯源碼補丁: https://sourceforge.net/projects/perlcross.berlios/files/, 下載版本是:perl-5.10.0-cross-0.3.tar.gz
分別解壓連個文件到同一個目錄下;
1
在ubuntu中安裝 perlbrew:
- sudo apt-get install perlbrew
perlbrew init
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5.10.1 2
3
4
5
等待perlbrew安裝完畢;
2
3
1
合並 兩個解壓出來的perl目錄,進入perl-5.10.1的Cross目錄中:
- cp -rfv perl-5.10.0/* perl-5.10.1/
cd perl-5.10.1/Cross 2
1
文件內容如下注意加了星號的內容:
- ### Target Arch
** ARCH = arm **
#ARCH = i386-pc
#ARCH = sh4
#ARCH = mips
#ARCH = mipsel
#ARCH = ppc
## Specific arm
**#CONFIG_TARGET_ARM_SA11X0 = 1**
#CONFIG_TARGET_ARM_XSCALE = 1
### Target OS
**OS = linux**
#OS = solaris2.8 1
修改perl的config文件
- gedit Cross/config ##或者 vi gedit Cross/config
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上面加粗字體表示注意的或者修改的;
修改當前目錄(Cross目錄)中的Makefile文件:
先改變一下目錄內容的許可權:
chmod 777 /Cross/*修改的Makefile文件內容:
- export TOPDIR=${shell pwd}
- include $(TOPDIR)/config
- export CFLAGS
- ** export SYS=arm-linux **
- ** export CROSS=/stuff/bitbake/bin/tmp/sysroots/i686- linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi- **
- ** export LD_LIBRARY=/stuff/bitbake/bin/tmp/sysroots/i686-linux/usr/lib:$(LD_LIBRARY_PATH) **
- export FULL_OPTIMIZATION = -fexpensive-optimizations -fomit-frame-pointer -O2
- export OPTIMIZATION = -O2
- export CC = arm-angstrom-linux-gnueabi-gcc
- export CXX = arm-angstrom-linux-gnueabi-g++
- export LD = arm-angstrom-linux-gnueabi-ld
- export STRIP = arm-angstrom-linux-gnueabi-strip
- export AR = arm-angstrom-linux-gnueabi-ar
- export RANLIB = arm-angstrom-linux-gnueabi-ranlib
- 12345678910111213141516
make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm patch
make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm perl
編譯會出錯,但是沒關系,會在根目錄生成perl可執行文件;
Ⅱ 編寫一個程序,由用戶輸入一個含有5個單詞的英文句子,按照用戶的要求輸出句中
源碼:
==============CODE===============
#!usr/bin/perl
print "Please enter a sentence containing 5 words:\n";
$sentence = <STDIN>;
print "\nWhich word do you want to print?\nEnter a number from 1 to 5:\n";
$num = <STDIN>;
@words = split /\s+/, $sentence;
print "The word is:\t$words[$num-1]\n";
==============CODE===============