在x86電腦上交叉編譯mips linux內核並升級替換原mips內核

主機環境使用的是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 -

編譯成功:
編譯成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章