編譯前的準備
原始碼包:perl-5.22.4.tar.gz 交叉編譯補丁包:perl-5.10.0-cross-0.1.tar.gz
解壓 perl-5.22.4.tar.gz 在x86上進行./configure.gnu 和make 得到乙個 generate_uudmap 可執行檔案,儲存備用
開始編譯:
解壓 perl-5.22.4.tar.gz,perl-5.10.0-cross-0.1.tar.gz
解壓完後把perl-5.10.0-cross-0.1.tar.gz 解壓出來的檔案全部拷貝到 perl-5.22.4/ 目錄,然後進入perl-5.22.4/cross目錄
修改config檔案(下面是我用的)
### 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 = hisiv600-linux
#os = solaris2.8
修改為config還得修改乙個檔案的名字(原名是 config.sh-arm-linux)
然後再修改makefile,如果makefile檔案是下面的樣子就不用修改了
export topdir=$
include $(topdir)/config
export cflags
export sys=$(arch)-$(os)
export cross=$(arch)-$(os)-
export full_optimization = -fexpensive-optimizations -fomit-frame-pointer -o2
export optimization = -o2
export cc = $(cross)gcc
export cxx = $(cross)g++
export ld = $(cross)ld
export strip = $(cross)strip
export ar = $(cross)ar
export ranlib = $(cross)ranlib
開始編譯:make patch 成功後再 make perl 會遇到 無法執行generate_uudmap,因為是交叉編譯的,所以無法執行,把前面儲存的generate_uudmap替換過來,再make perl,可以編譯出
雖然失敗了,但是miniperl已經編譯出來了,這裡交叉編譯出來miniperl的無法執行是正確的
編譯 交叉編譯
交叉編譯含義 是指在乙個平台上生成另乙個平台上的可執行 同乙個體系結構可以執行不同的作業系統,同樣乙個作業系統也可以在不同的體系結構上執行 例 常說的x86 linux平台 指inter x86體系結構及linux for x86作業系統 x86 winnt平台 指inter x86體系結構及win...
交叉編譯(2) 交叉編譯鏈
什麼是交叉編譯鏈 明白了什麼是交叉編譯,那我們來看看什麼是交叉編譯鏈。首先編譯過程是按照不同的子功能,依照先後順序組成的乙個複雜的流程,如下圖 那麼編譯過程包括了預處理 編譯 彙編 鏈結等功能。既然有不同的子功能,那每個子功能都是乙個單獨的工具來實現,它們合在一起形成了乙個完整的工具集。同時編譯過程...
交叉編譯 Go 交叉編譯 跨平台編譯
golang 支援交叉編譯,在乙個平台上生成另乙個平台的可執行程式 cgo enabled 0 goos linux goarch amd64 go build main.go cgo enabled 0 goos windows goarch amd64 go build main.go cgo ...