在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 -

编译成功:
编译成功

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值