步驟:
跨平臺編譯準備條件, 跨平臺編譯環境通常是arm版的gcc,定製好的linux源碼
本文針對Raspberry Pi的linux 交叉編譯 armlinux
初級:git
Raspberry Pi官方已經提升了一系列的工具,幫助愛好者進行定製的行動,例如
比較流行的ARCH Linux就是其中之一.基本過程也比較簡單易懂,適合新手.github
1. 下載官方爲Raspberry Pi定製好的arm版gcc工具 (arm-bcm2708hardfp-linux-gnueabi) https://github.com/raspberrypi/tools . 2. 解壓工具tools-master.zip,產生tools文件夾 unzip tools-master.zip . 3. 將解壓後內核關於arm的配置選項進行復制 cp tools/configs/bcm2708hardfp-ct-ng.config /usr/src/linux-3.13.6/.config . --------------------------------------------------------------------- . 4. 確保你第一步已經將 tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/ 該目錄已經添加了環境變量 make ARCH=arm CROSS_COMPILE=arm-bcm2708hardfp-linux-gnueabi- -j 4 . 5. 將編譯好的內核文件進行解壓,造成kernel.img tools/mkp_w_picpath/p_w_picpathtool-uncompressed.py /usr/src/linux-3.13.6/arch/arm/boot/zImage . 6. 準備啓動內核 of 爲 sd卡設備路徑 dd bs=1M if=kernel.img of=/dev/sdb
注: windows的話,使用Win32DiskImager
固然你也能夠不要官方的tools來實現,能夠下載arm-linux-gcc,將CROSS_COMPILE替換成arm-linux-便可windows
前提條件是你已經將arm-linux-gcc的bin目錄添加到了環境變量中bash
進階:ide
手動構建arm工具鏈 (爲arm平臺軟件編譯,運行提供基礎必要環境),可參見
http://elinux.org/RPi_Kernel_Compilation#Use_the_provided_compiler (自備牆梯)svn
# 利用 yum 源安裝如下依賴 yum -y install gperf texinfo . # 下載crosstool-ng源碼包(這裏儘可能選擇高版本的包,不然麻煩將與你隨行 :) wget http://down1.chinaunix.net/distfiles/crosstool-ng-1.17.0.tar.bz2 . # 解壓安裝 tar xf crosstool-ng-1.17.0.tar.bz2 ./configure --prefix=/usr/local/crosstool-ng make && make install . # 導出環境變量 echo "PATH=/usr/local/crosstool-ng/bin:$PATH" > /etc/profile.d/ct-ng.sh . # 重載環境變量 . /etc/profile.d/ct-ng.sh . # 配置工具鏈 ct-ng.sh menuconfig . # 選項以下: # 詳見 /usr/local/crosstool-ng/share/doc/crosstool-ng/ct-ng.1.17.0/ crosstool-NG 1.17.0 Configuration --->Paths and misc options --->(*) Try features marked as EXPERIMENTAL --->(path) Local tarballs directory --->(path) Prefix directory --->(4) Number of parallel jobs --->Target options --->Target Architecture (arm) --->Bitness: (32-bit) --->Endianness: (Little endian) --->(armv4t) Architecture level --->(arm9tdmi) Emit assembly for CPU --->(arm920t) Tune for CPU --->Operating System --->Target OS (linux) --->C compiler (gcc) --->(*) Linaro versions (EXPERIMENTAL) --->gcc version (linaro-4.7-2012.10 (EXPERIMENTAL)) --->Toolchain options --->(king) Tuple's vendor string # 編輯當前目錄下 .config 將 CT_WANTS_STATIC_LINK=y 改成 CT_WANTS_STATIC_LINK is not set . # 下載如下軟件到 --->(path) Local tarballs directory 此選項所規定的路徑中去 wget https://launchpad.net/gcc-linaro/4.7/4.7-2012.10/+download/gcc-linaro-4.7-2012.10.tar.bz2 svn co svn://svn.eglibc.org/branches/eglibc-2_16 eglibc-2.16 wget http://ftp.gnu.org/gnu/gmp/gmp-5.1.3.tar.gz wget http://bugseng.com/products/ppl/download/ftp/releases/1.0/ppl-1.0.tar.gz http://nchc.dl.sourceforge.net/project/duma/duma/2.5.15/duma_2_5_15.tar.gz . # 構建arm編譯工具鏈(此過程較長) ct-ng build . # 構建完畢後將當前目錄bin添加到環境變量 # 重複初級第四步過程將CROSS_COMPILE替換成剛剛構建好的arm- # king-linux-gnueabi-gcc便可,細心的朋友可能會注意到其實 # raspberry官方提供的tools工具其實就是利用cross-tool-ng來 # 完成的 :)
寫在最後 , 兩天無數次的嘗試 , 還有必定瑕疵 , 修正後上圖加詳細註釋...
工具