weixin_43496057 2024-07-24 15:07 采纳率: 25%
浏览 20

centos 7 编译内核报错

centos 7 编译内核报错


[root@localhost linux-6.9.9]# make -j4
  GEN     arch/x86/include/generated/asm/orc_hash.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
  UPD     include/config/kernel.release
  HYPERCALLS arch/x86/include/generated/asm/xen-hypercalls.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/kmap_size.h
  WRAP    arch/x86/include/generated/asm/local64.h
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  WRAP    arch/x86/include/generated/asm/unaligned.h
  UPD     include/generated/uapi/linux/version.h
  UPD     include/generated/utsrelease.h
  UPD     include/generated/compile.h
  HOSTCC  scripts/genksyms/genksyms.o
mkdir -p /data/linux-6.9.9/tools/objtool && make O=/data/linux-6.9.9 subdir=tools/objtool --no-print-directory -C objtool 
  YACC    scripts/genksyms/parse.tab.[ch]
  LEX     scripts/genksyms/lex.lex.c
  HOSTCC  arch/x86/tools/relocs_common.o
<stdin>:1:10: 致命错误:libelf.h:没有那个文件或目录
编译中断。
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTLD  arch/x86/tools/relocs
  HOSTCC  /data/linux-6.9.9/tools/objtool/fixdep.o
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTCC  scripts/genksyms/parse.tab.o
  HOSTLD  /data/linux-6.9.9/tools/objtool/fixdep-in.o
  LINK    /data/linux-6.9.9/tools/objtool/fixdep
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/exec-cmd.o
  HOSTCC  scripts/genksyms/lex.lex.o
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/help.o
  HOSTCC  scripts/kallsyms
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/pager.o
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/parse-options.o
  HOSTLD  scripts/genksyms/genksyms
  HOSTCC  scripts/sign-file
scripts/sign-file.c:25:10: 致命错误:openssl/opensslv.h:没有那个文件或目录
   25 | #include <openssl/opensslv.h>
      |          ^~~~~~~~~~~~~~~~~~~~
编译中断。
make[2]: *** [scripts/Makefile.host:116:scripts/sign-file] 错误 1
make[2]: *** 正在等待未完成的任务....
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/run-command.o
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/sigchain.o
  CC      /data/linux-6.9.9/tools/objtool/libsubcmd/subcmd-config.o
  INSTALL /data/linux-6.9.9/tools/objtool/libsubcmd/include/subcmd/exec-cmd.h
  INSTALL /data/linux-6.9.9/tools/objtool/libsubcmd/include/subcmd/help.h
  INSTALL /data/linux-6.9.9/tools/objtool/libsubcmd/include/subcmd/pager.h
  INSTALL /data/linux-6.9.9/tools/objtool/libsubcmd/include/subcmd/parse-options.h
  INSTALL /data/linux-6.9.9/tools/objtool/libsubcmd/include/subcmd/run-command.h
  INSTALL libsubcmd_headers
make[1]: *** [/data/linux-6.9.9/Makefile:1180:scripts] 错误 2
make[1]: *** 正在等待未完成的任务....
  LD      /data/linux-6.9.9/tools/objtool/libsubcmd/libsubcmd-in.o
  AR      /data/linux-6.9.9/tools/objtool/libsubcmd/libsubcmd.a
  CC      /data/linux-6.9.9/tools/objtool/weak.o
  CC      /data/linux-6.9.9/tools/objtool/check.o
  CC      /data/linux-6.9.9/tools/objtool/special.o
  CC      /data/linux-6.9.9/tools/objtool/arch/x86/special.o
In file included from /data/linux-6.9.9/tools/objtool/include/objtool/objtool.h:13,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/arch.h:11,
                 from check.c:13:
/data/linux-6.9.9/tools/objtool/include/objtool/elf.h:10:10: 致命错误:gelf.h:没有那个文件或目录
   10 | #include <gelf.h>
      |          ^~~~~~~~
In file included from /data/linux-6.9.9/tools/objtool/include/objtool/objtool.h:13,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/arch.h:11,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/check.h:11,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/special.h:10,
                 from special.c:16:
/data/linux-6.9.9/tools/objtool/include/objtool/elf.h:10:10: 致命错误:gelf.h:没有那个文件或目录
   10 | #include <gelf.h>
      |          ^~~~~~~~

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
In file included from /data/linux-6.9.9/tools/objtool/include/objtool/objtool.h:13,
                 from weak.c:10:
/data/linux-6.9.9/tools/objtool/include/objtool/elf.h:10:10: 致命错误:gelf.h:没有那个文件或目录
   10 | #include <gelf.h>
      |          ^~~~~~~~
编译中断。
编译中断。
编译中断。
make[4]: *** [/data/linux-6.9.9/tools/build/Makefile.build:106:/data/linux-6.9.9/tools/objtool/weak.o] 错误 1
make[4]: *** 正在等待未完成的任务....
make[4]: *** [/data/linux-6.9.9/tools/build/Makefile.build:106:/data/linux-6.9.9/tools/objtool/check.o] 错误 1
make[4]: *** [/data/linux-6.9.9/tools/build/Makefile.build:106:/data/linux-6.9.9/tools/objtool/special.o] 错误 1
  MKDIR   /data/linux-6.9.9/tools/objtool/arch/x86/lib/
  CC      /data/linux-6.9.9/tools/objtool/arch/x86/orc.o
  GEN     /data/linux-6.9.9/tools/objtool/arch/x86/lib/inat-tables.c
In file included from /data/linux-6.9.9/tools/objtool/include/objtool/objtool.h:13,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/arch.h:11,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/check.h:11,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/special.h:10,
                 from arch/x86/special.c:4:
/data/linux-6.9.9/tools/objtool/include/objtool/elf.h:10:10: 致命错误:gelf.h:没有那个文件或目录
   10 | #include <gelf.h>
      |          ^~~~~~~~
编译中断。
make[5]: *** [/data/linux-6.9.9/tools/build/Makefile.build:106:/data/linux-6.9.9/tools/objtool/arch/x86/special.o] 错误 1
make[5]: *** 正在等待未完成的任务....
In file included from /data/linux-6.9.9/tools/objtool/include/objtool/objtool.h:13,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/arch.h:11,
                 from /data/linux-6.9.9/tools/objtool/include/objtool/check.h:11,
                 from arch/x86/orc.c:5:
/data/linux-6.9.9/tools/objtool/include/objtool/elf.h:10:10: 致命错误:gelf.h:没有那个文件或目录
   10 | #include <gelf.h>
      |          ^~~~~~~~
编译中断。
make[5]: *** [/data/linux-6.9.9/tools/build/Makefile.build:106:/data/linux-6.9.9/tools/objtool/arch/x86/orc.o] 错误 1
make[4]: *** [/data/linux-6.9.9/tools/build/Makefile.build:158:arch/x86] 错误 2
make[3]: *** [Makefile:70/data/linux-6.9.9/tools/objtool/objtool-in.o] 错误 2
make[2]: *** [Makefile:72:objtool] 错误 2
make[1]: *** [/data/linux-6.9.9/Makefile:1357:tools/objtool] 错误 2
make: *** [Makefile:240:__sub-make] 错误 2
[root@localhost linux-6.9.9]#  make clean
  CLEAN   arch/x86/tools
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2024-07-24 15:07
    关注

    以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:


    从您提供的编译内核日志来看,您在CentOS 7上编译Linux内核时遇到了缺少开发库头文件的问题。这些问题通常可以通过安装相应的开发包来解决。下面是根据您提供的信息,给出的解决步骤:

    1. 安装libelf开发包: 由于报错提示缺少libelf.h,您需要安装libelf的开发包。在CentOS 7上,您可以使用以下命令来安装:

      sudo yum install libelf-devel
      
    2. 安装OpenSSL开发包: 报错信息中还提到缺少openssl/opensslv.h,这表明需要安装OpenSSL的开发包。同样,在CentOS 7上,您可以使用以下命令:

      sudo yum install openssl-devel
      
    3. 清理并重新编译: 在安装了所需的依赖之后,您需要清理之前的编译结果,然后重新编译内核。使用以下命令来清理:

      make clean
      

      然后再次尝试编译:

      make -j4
      
    4. 检查依赖安装情况: 如果不确定依赖是否正确安装,您可以手动检查头文件是否存在于预期的目录中:

      ls /usr/include/libelf.h
      ls /usr/include/openssl/opensslv.h
      
    5. 使用脚本自动化安装: 您可以编写一个简单的脚本来自动检查并安装这些依赖,如果它们不存在的话。以下是一个基本的脚本示例:

      #!/bin/bash
      
      # 函数:检查并安装包
      function check_and_install {
          pkg=$1
          header=$2
          if [ ! -f "$header" ]; then
              echo "检测到缺少 $header,尝试安装 $pkg..."
              sudo yum install -y $pkg
          fi
      }
      
      # 检查 libelf.h
      check_and_install 'libelf-devel' '/usr/include/libelf.h'
      
      # 检查 openssl/opensslv.h
      check_and_install 'openssl-devel' '/usr/include/openssl/opensslv.h'
      
      # 清理并重新编译内核
      make clean
      make -j4
      

    请注意,这个脚本只是一个示例,您可能需要根据您的具体情况对其进行调整。在运行脚本之前,请确保您有足够的权限来安装软件包。

    希望这些步骤能帮助您解决编译内核时遇到的问题。如果问题仍然存在,请提供更多的错误信息,以便进一步分析和解决。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月24日