主机环境使用的是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 -
编译成功: