環境:
PC系統: ubuntu16.04LTS
目標開發板: itop4412
-
源代碼收集
1.1 下載binutils
網址:https://mirrors.tuna.tsinghua.edu.cn/gnu/binutils/binutils-2.26.1.tar.bz21.2 下載glibc
兩種源代碼:
網址:http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
http://ftp.gnu.org/gnu/glibc/glibc-ports-2.16.0.tar.xz1.3 下載gcc源碼
下載速度較快
https://github.com/gcc-mirror/gcc/releases/tag/gcc-4_9_4-release
下載速度較慢
ftp://ftp.mpi-sb.mpg.de/pub/gnu/mirror/gcc.gnu.org/pub/gcc/releases/gcc-4.9.0/gcc-4.9.0.tar.bz21.4 下載MPFR
https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.gz1.5 下載GMP
https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz -
聯編源代碼
2.1 聯編binutils
step1: 進入binutils源文件目錄,並執行
./configure --disable-werror --build=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/usr/local/arm/arm-gcc-2016/bin --with-sysroot=/usr/local/arm/arm-gcc-2016/sysroot
step2: 執行make
step3: 執行make install,結束
2.2 內核頭文件安裝
step1: 進入內核源代碼根目錄
step2: 執行make mrproper, 清理環境,是的內核源代碼恢復到剛解壓時的狀態
step3: 執行 make ARCH=arm integrator_defconfig
step4: 執行 make ARCH=arm headers_check,此處出現了錯誤:原因不知,暫時忽略。
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/if_pppox.h:24: included file ‘linux/if_pppolac.h’ is not exported
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/if_pppox.h:25: included file ‘linux/if_pppopns.h’ is not exported
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/kernel.h:65: userspace cannot reference function or variable defined in the kernel
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/kernel.h:97: userspace cannot reference function or variable defined in the kernel
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/quota.h:175: userspace cannot reference function or variable defined in the kernel
/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/soundcard.h:1054: userspace cannot reference function or variable defined in the kernel
/home/liqiang/work/linux/iTop4412_Kernel_3.0/scripts/Makefile.headersinst:91: recipe for target ‘/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/.check’ failed
make[2]: *** [/home/liqiang/work/linux/iTop4412_Kernel_3.0/usr/include/linux/.check] Error 123
/home/liqiang/work/linux/iTop4412_Kernel_3.0/scripts/Makefile.headersinst:99: recipe for target ‘linux’ failed
make[1]: *** [linux] Error 2
Makefile:1079: recipe for target ‘headers_check’ failed
make: *** [headers_check] Error 2
step5: 執行 make ARCH=arm INSTALL_HDR_PATH=/usr/local/arm/arm-gcc-2016/sysroot/usr headers_install,進行頭文件安裝,結束。
2.3自舉GCC(第一階段)
step1:
./configure
–build=i686-pc-linux-gnu
–host=i686-pc-linux-gnu
–target=arm-none-linux-gnueabi
–prefix=/usr/local/arm/arm-gcc-2016/bin
–without-headers
–enable-boostrap
–enable-languages"c"
–disable-threads
–enable-_cxa_atexit
–disable-libmudflap
–with-gnu-ld --with-gnu-as
–disable-libssp --disable-libgomp
–disable-nls --disable-shared
至此:發現有現成的交叉編譯器下載,地址如下
https://releases.linaro.org/components/toolchain/binaries/
故而終止聯編交叉編譯工具鏈,時間白白浪費了1天。
接下來進入《交叉編譯opencv3.4之下載交叉編譯工具鏈並編譯(三)》,待續
本文參考資料:《Linux嵌入式系統高級程序設計 》