linux 内核编译

  • 下载linux内核:

    git clone https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.21.tar.gz
    # 也可以直接到 https://www.kernel.org/ 下载
    tar -xvf ./linux-4.4.21.tar.gz -C .
    
  • 配置linux内核

  1. 自定义内核配置:make menuconfig
    通过按下按键'y','n','m'来设置内核的功能
    menuconfig 依赖 Kconfig,Kconfig为其构建菜单目录
    如果当前目录没有.config文件,可以生成新的.config文件;有的话不会打开原来的.config文件,除非使用load把原理的.config加载进来。
    可能报错:
    错误:fatal error: curses.h: No such file or directory
    解决办法:sudo apt-get install libncurses5-dev

    Linux内核配置之Kconfig
    Linux驱动开发|WiFi驱动 -> 修改Kconfig

  2. 使用默认配置:make xxx.config/xxx_defconfig
    注意:make 后接的是名字,不是路径

    # x86架构的默认配置
    root:~/linux-4.4.21$ ls ./arch/x86/configs/
    i386_defconfig    kvm_guest.config  tiny.config       x86_64_defconfig  xen.config
    # 不使用 ARCH=xxx 标识架构,使用默认架构下的configs
    # 如下使用 ./arch/x86/configs/x86_64_defconfig
    root:~/linux-4.4.21$ make x86_64_defconfig
    #
    # configuration written to .config
    #
    
  3. 使用原有config配置

    root:~/linux-4.4.21$ cp /boot/config-$(uname -r) ./.config
    root:~/linux-4.4.21$ make menuconfig 
    # 在弹出界面选择 load -> 选择.config -> exit -> save
    # 不做这步的话会make的时候会一直提示
    
  • 编译:make -j8
  1. 报错:cc1: error: code model kernel does not support PIC mode
    原因:高版本 gcc 自动使用 -fpie 参数
    解决:Makefile:KBUILD_CFLAGS 添加 -fno-pie
    在这里插入图片描述

    https://blog.csdn.net/qq_44933518/article/details/105881723
    https://blog.csdn.net/qq_27577247/article/details/100152714

  2. 报错:scripts/sign-file.c:23:10: fatal error: openssl/opensslv.h: No such file or directory
    原因:缺少依赖库
    解决:sudo apt-get install libssl-dev

    https://blog.csdn.net/lsky380/article/details/90700104

  3. 报错:cc1: sorry, unimplemented: ‘-mfentry’ isn’t supported for 32-bit in combination with ‘-fpic’
    原因:高版本 gcc 自动使用 -fpic 参数
    解决:Makefile:-mfentry 后加 -fno-pic
    在这里插入图片描述

    https://blog.csdn.net/qq_34905587/article/details/107386659

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值