请选择 进入手机版 | 继续访问电脑版

使用交叉编译工具编译内核

编译器工具链 编译器工具链 2119 人阅读 | 2 人回复 | 2021-09-14

以交叉编译sw6B内核模块为例
✔1、 配置交叉编译环境
将交叉编译器swgcc830_cross_tools-bb623bc9a 放到x86的 /usr/sw/下面
✔2、 使用编译脚本
将脚本mk.sh放到内核源码主目录下,并设置可执行权限766,脚本内容如下
  1. #!/bin/sh
  2. export PATH=/usr/sw/swgcc830_cross_tools-bb623bc9a/usr/bin/:$PATH
  3. cross_prefix=sw_64-sunway-linux-gnu-
  4. arch=sw_64
  5. if [ -f ".config" ]
  6. then
  7. make CROSS_COMPILE=${cross_prefix} ARCH=${arch} $1 $2 TERM=xterm
  8. else
  9. make CROSS_COMPILE=${cross_prefix} ARCH=${arch} menuconfig TERM=xterm
  10. fi
  11. if [ -f "vmlinux" ]
  12. then
  13. ${cross_prefix}objdump -d vmlinux >1
  14. ${cross_prefix}objcopy -O binary vmlinux vmlinux1
  15. fi
复制代码
3、 编译步骤
  1. 1. 使用内核源码自带默认配置
  2. cp arch/sw_64/configs/xuelang_defconfig .config
  3. 2. 配置内核菜单选项,完成后保存退出
  4. ./mk.sh  menuconfig
  5. 3. 执行mk脚本编译内核,后面-j参数指定一次可以并行执行多少jobs数
  6. ./mk.sh -j 32
  7. 4. 编译模块,这里指定将模块放在mod目录
  8. ./mk.sh modules_install INSTALL_MOD_PATH=mod
复制代码
✔ 4、关于initrd.img的生成
  1. 1. 在/lib/modules/下面执行 update-initramfs -c -k 4.19.90-deepin-aere+
  2. (注意:模块的名字不要有 / ),这样会自动在/boot 下生成模块名为4.19.90-deepin-aere+配套的initrd.img文件,确保/boot
  3. 空间足够,不够就清理。
  4. 2. 在/lib/modules下面执行 mkinitramfs -o initrd.img.renchy 4.19.90-deepin-aere+
  5. (注意:模块的名字不要有 / ),就会在当前目录生成initrd文件。


  6. 下面的方法可以自主裁剪initrd中所使用的功能,具体介绍可以参考内核中Documentation/admin-guide/initrd.rst 第88行左右
  7. gzip -cd /boot/imagefile.img | cpio -imd --quiet
  8. find . | cpio --quiet -H newc -o | gzip -9 -n > /boot/imagefile.img
复制代码

回复

使用道具 举报

回答|共 2 个

TecSupport

发表于 2021-9-14 18:51:29 | 显示全部楼层

新版本gcc830交叉编译工具下载路径:
链接:https://pan.baidu.com/s/1PPFW431b7uQFqupKZKWyGQ
提取码:xttc
--来自百度网盘超级会员V3的分享
回复

使用道具 举报

TecSupport

发表于 2021-9-17 12:28:42 | 显示全部楼层

旧版本:gcc830交叉编译工具下载路径:
链接:https://pan.baidu.com/s/10PrrLeywRe4HJPI-P-uXdw
提取码:jhgq
--来自百度网盘超级会员V3的分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则