Linux 内核编译报错及解决办法记录

  1. Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
    在这里插入图片描述
    根据错误的提示信息,Maybe you should just omit the defined()(也许你该删除define),然后打开该文件跳转到指定行数,删除define,修改后如下图所示
    在这里插入图片描述
  2. include/linux/netfilter_ipv4/ipt_ECN.h:13: fatal error: linux/netfilter/xt_dscp.h: No such file or directory
    在这里插入图片描述
    根据错误信息,提示找不到该文件,在当前目录下搜索下该文件,不区分大小写 grep -rn xt_dscp.h,结果如下图所示,可见在该文件夹内存在同名的文件,只是大小写不一样,而linux是大小写敏感的,因此提示找不到该文件,先简单的处理下,在该文件同一目录下新建一个同名小写的文件 cp include/linux/netfilter/xt_DSCP.h include/linux/netfilter/xt_dscp.h
    在这里插入图片描述
    按照上述方法修改完成后,继续执行make zImage进行编译,不出所料继续报错,如下图所示
    在这里插入图片描述
    这是由于该文件夹是在Windows下解压然后直接拷贝到ubuntu下,由于Windows是大小写不敏感的,其会导致部分文件丢失和被更改,重新将内核源码压缩式拷贝到ubuntu,然后进行解压,解压完成后,执行grep -rn xt_dscp.h对上述分析进行验证,结果如下所示,在内核文件中确实存在同名但是大小写不一样的xt_DSCP.h xt_dscp.h两个文件
    在这里插入图片描述
    然后重新执行make zImage,顺利完成镜像编译,如下图所示在这里插入图片描述
    3.fatal error: gmp.h: 没有那个文件或目录
    在这里插入图片描述
    解决办法:sudo apt-get install libgmp-dev
    注:GMP(The GNU Multiple Precision Arithmetic Library)又叫GNU多精度算术库,是一个提供了很多操作高精度的大整数,浮点数的运算的算术库,几乎没有什么精度方面的限制,功能丰富。我刚接触到这个东西的时候是在学习PHP的过程中。GMP的主要目标应用领域是密码学的应用和研究、 互联网安全应用、 代数系统、 计算代数研究等。

4.fatal error: mpc.h: 没有那个文件或目录
在这里插入图片描述
解决方法:sudo apt-get install libmpc-dev
注:MPC(Library for the arithmetic of complex numbers with arbitrarily high precision)任意高精度复数算法库

Logo

更多推荐