主機環境使用的是uos系統
第一步 下載安裝gcc交叉編譯器
剛開始走了很多彎路。搞了GNU gcc源碼安裝,還有這個網頁【Linux】Linux下搭建MIPS交叉編譯環境安裝亂七八糟的軟件包。都太過麻煩了。
最後是自己查找了一下安裝源,已經提供了gcc mips交叉編譯器,
sudo apt-cache search gcc | grep mips
這裏我根據mips測試機的gcc版本,選擇的gcc-8-mips64el-linux-gnuabi64。
查看gcc版本可通過如下命令查看:
uos@uos-PC:~$ which gcc
/usr/bin/gcc
uos@uos-PC:~$
uos@uos-PC:~$
uos@uos-PC:~$
uos@uos-PC:~$ ls -l /usr/bin/gcc
lrwxrwxrwx 1 root root 5 5月 26 09:36 /usr/bin/gcc -> gcc-8
uos@uos-PC:~$
uos@uos-PC:~$
uos@uos-PC:~$ ls -l /usr/bin/gcc-8
lrwxrwxrwx 1 root root 29 5月 26 09:36 /usr/bin/gcc-8 -> mips64el-linux-gnuabi64-gcc-8
uos@uos-PC:~$
uos@uos-PC:~$
uos@uos-PC:~$ ls -l /usr/bin/mips64el-linux-gnuabi64-gcc
mips64el-linux-gnuabi64-gcc mips64el-linux-gnuabi64-gcc-nm
mips64el-linux-gnuabi64-gcc-8 mips64el-linux-gnuabi64-gcc-nm-8
mips64el-linux-gnuabi64-gcc-ar mips64el-linux-gnuabi64-gcc-ranlib
mips64el-linux-gnuabi64-gcc-ar-8 mips64el-linux-gnuabi64-gcc-ranlib-8
uos@uos-PC:~$ ls -l /usr/bin/mips64el-linux-gnuabi64-gcc-8
-rwxr-xr-x 1 root root 1216744 5月 26 09:36 /usr/bin/mips64el-linux-gnuabi64-gcc-8
uos@uos-PC:~$
uos@uos-PC:~$
uos@uos-PC:~$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/mips64el-linux-gnuabi64/8/lto-wrapper
Target: mips64el-linux-gnuabi64 //這裏顯示了編譯器的類型
Configured with: ../src/configure -v --with-pkgversion='Uos 8.3.0.2-1+deepin' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gc4
Thread model: posix
gcc version 8.3.0 (Uos 8.3.0.2-1+deepin)
uos@uos-PC:~$
安裝交叉編譯器
sudo apt-get install gcc-8-mips64el-linux-gnuabi64
安裝後查看,發現安裝瞭如下一整套工具:
chaoshuaihaohao@chaoshuaihaohao-PC:/usr/bin$ ls -l | grep mips
-rwxr-xr-x 1 root root 31776 2月 13 20:54 mips64el-linux-gnuabi64-addr2line
-rwxr-xr-x 1 root root 64552 2月 13 20:54 mips64el-linux-gnuabi64-ar
-rwxr-xr-x 1 root root 869240 2月 13 20:54 mips64el-linux-gnuabi64-as
-rwxr-xr-x 1 root root 31360 2月 13 20:54 mips64el-linux-gnuabi64-c++filt
-rwxr-xr-x 1 root root 1031032 2月 27 2019 mips64el-linux-gnuabi64-cpp-8
-rwxr-xr-x 1 root root 3084976 2月 13 20:54 mips64el-linux-gnuabi64-dwp
-rwxr-xr-x 1 root root 35536 2月 13 20:54 mips64el-linux-gnuabi64-elfedit
-rwxr-xr-x 1 root root 1026936 2月 27 2019 mips64el-linux-gnuabi64-gcc-8
-rwxr-xr-x 1 root root 31200 2月 27 2019 mips64el-linux-gnuabi64-gcc-ar-8
-rwxr-xr-x 1 root root 31200 2月 27 2019 mips64el-linux-gnuabi64-gcc-nm-8
-rwxr-xr-x 1 root root 31200 2月 27 2019 mips64el-linux-gnuabi64-gcc-ranlib-8
-rwxr-xr-x 1 root root 655448 2月 27 2019 mips64el-linux-gnuabi64-gcov-8
-rwxr-xr-x 1 root root 503760 2月 27 2019 mips64el-linux-gnuabi64-gcov-dump-8
-rwxr-xr-x 1 root root 528400 2月 27 2019 mips64el-linux-gnuabi64-gcov-tool-8
-rwxr-xr-x 1 root root 98648 2月 13 20:54 mips64el-linux-gnuabi64-gprof
lrwxrwxrwx 1 root root 30 2月 13 20:53 mips64el-linux-gnuabi64-ld -> mips64el-linux-gnuabi64-ld.bfd
-rwxr-xr-x 1 root root 1777720 2月 13 20:54 mips64el-linux-gnuabi64-ld.bfd
-rwxr-xr-x 1 root root 3588816 2月 13 20:54 mips64el-linux-gnuabi64-ld.gold
-rwxr-xr-x 1 root root 44792 2月 13 20:54 mips64el-linux-gnuabi64-nm
-rwxr-xr-x 1 root root 175536 2月 13 20:54 mips64el-linux-gnuabi64-objcopy
-rwxr-xr-x 1 root root 341504 2月 13 20:54 mips64el-linux-gnuabi64-objdump
-rwxr-xr-x 1 root root 64552 2月 13 20:54 mips64el-linux-gnuabi64-ranlib
-rwxr-xr-x 1 root root 568288 2月 13 20:54 mips64el-linux-gnuabi64-readelf
-rwxr-xr-x 1 root root 31648 2月 13 20:54 mips64el-linux-gnuabi64-size
-rwxr-xr-x 1 root root 31824 2月 13 20:54 mips64el-linux-gnuabi64-strings
-rwxr-xr-x 1 root root 175536 2月 13 20:54 mips64el-linux-gnuabi64-strip
chaoshuaihaohao@chaoshuaihaohao-PC:/usr/bin$ cd -
第二步 交叉編譯mips linux內核
切換到內核源碼根目錄,編譯內核:
這裏也可以用
export ARCH=mips
export CROSS_COMPILE=mips64el-linux-gnuabi64-
然後
make menuconfig
配置完通用配置後,保存退出,再選擇內核自帶的參考配置,這裏我用的uos桌面版配置:
make uosdesktop_defconfig
//生成vmlinux
make -j64
或
//生成image
make bindeb-pkg
編譯可能出現如下錯誤:
......
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
/bin/sh: 1: mips64el-linux-gnuabi64-gcc: not found
./scripts/gcc-version.sh:行26: mips64el-linux-gnuabi64-gcc:未找到命令
./scripts/gcc-version.sh:行27: mips64el-linux-gnuabi64-gcc:未找到命令
......
會顯示找不到mips64el-linux-gnuabi64-gcc,因爲我們安裝的gcc文件名是mips64el-linux-gnuabi64-gcc-8,創建一個軟鏈接即可:
chaoshuaihaohao@chaoshuaihaohao-PC:~/gitlab/loongson-kernel$ cd /usr/bin/
chaoshuaihaohao@chaoshuaihaohao-PC:/usr/bin$ sudo ln -s mips64el-linux-gnuabi64-gcc-8 mips64el-linux-gnuabi64-gcc
chaoshuaihaohao@chaoshuaihaohao-PC:/usr/bin$ cd -
編譯成功: