IMX6ULL编译led驱动程序出现fatal error: generated/autoconf.h以及 ERROR: Kernel configuration is invalid.的解决方法

3 篇文章 0 订阅
1 篇文章 0 订阅

问题背景:

        最近在学习IMX6ULL的驱动程序,在用make命令执行编译led驱动程序时,出现以下报错:

make -C /home/book/100ask_imx6ull-sdk/Linux-4.9.88 M=pwd modules 
make[1]: 进入目录“/home/book/100ask_imx6ull-sdk/Linux-4.9.88”

  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.

  WARNING: Symbol version dump ./Module.symvers
           is missing; modules will have no dependencies and modversions.

  CC [M]  /home/book/01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/00_led_drv_simple/imx6ull/led_drv.o
In file included from :0:0:
././include/linux/kconfig.h:4:10: fatal error: generated/autoconf.h: 没有那个文件或目录
 #include <generated/autoconf.h>
          ^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
scripts/Makefile.build:299: recipe for target '/home/book/01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/00_led_drv_simple/imx6ull/led_drv.o' failed
make[2]: *** [/home/book/01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/00_led_drv_simple/imx6ull/led_drv.o] Error 1
Makefile:1499: recipe for target 'module/home/book/01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/00_led_drv_simple/imx6ull' failed
make[1]: *** [module/home/book/01_all_series_quickstart/05_嵌入式Linux驱动开发基础知识/source/02_led_drv/00_led_drv_simple/imx6ull] Error 2
make[1]: 离开目录“/home/book/100ask_imx6ull-sdk/Linux-4.9.88”
Makefile:13: recipe for target 'all' failed
make: *** [all] Error 2

        很明显,上面出现了两个错误和一个警告:

错误1:
  ERROR: Kernel configuration is invalid.
         include/generated/autoconf.h or include/config/auto.conf are missing.
         Run 'make oldconfig && make prepare' on kernel src to fix it.

大意是说内核配置无效。缺少include/generated/autoconf.h或include/config/auto.conf文件。

需要特别注意的是,这里报错提示给出了解决建议:在内核源码的目录下运行make oldconfig && make prepare来修复该报错。

错误2:

././include/linux/kconfig.h:4:10: fatal error: generated/autoconf.h: 没有那个文件或目录
 #include <generated/autoconf.h>
          ^~~~~~~~~~~~~~~~~~~~~~

意思是说,././include/linux/kconfig.h里没有链接generated/autoconf.h文件。

警告:

  WARNING: Symbol version dump ./Module.symvers
           is missing; modules will have no dependencies and modversions.

大意是说,Linux内核代码的目录下丢失了符号版本信息文件 Module.symvers文件,将会导致模块没有依赖项和版本信息。

解决过程:

       首要考虑是按报错的建议操作去解决,但是到了Linux的源码目录下执行了make oldconfig ,但是它会出现许多需要配置的问答,即使我长按空格按默认答案回答,依然需要很长的时间,在长按了一会儿后,直接Ctrl + C放弃了这个建议。几经周折后,终于找到了一个可行的解决方法。

解决方法:

  1. 首先进入内核源代码目录,执行以下命令:

make mrproper

        这个命令会清除先前的编译结果和配置文件。

        2. 配置内核编译选项和模块,例如执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 100ask_imx6ull_defconfig

        其中,100ask_imx6ull_defconfig是我使用的硬件平台对应的配置文件。如使用其他配置文件,需要根据实际情况修改。

        3. 生成Makefile文件,例如执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

        make menuconfig这个命令会打开一个文本界面的配置工具,可以在里面配置内核编译选项和模块。配置完成后,保存退出即可。

        具体操作为

        (1)、用方向键移动光标至Enalble loadable module support,确保下面的光标在Select处,回车。保证前方的中括号内有*星号。

       ( 2)、用方向键左右移动下面的光标至Save处,回车。

        3、此页面默认OK,直接回车即可。

   

        (4)、选中Exit,退出menuconfig

        4. 运行 'make oldconfig && make prepare' 命令来修复内核配置,执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- oldconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- prepare

        

        5.重新编译内核模块,例如执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules -j4

        

        6.如果还有模块依赖于 Module.symvers 文件,则需要先编译内核,例如执行以下命令:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules -j4

注意,在执行make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4命令时,可能会提示:


LZO     arch/arm/boot/compressed/piggy_data
/bin/sh: 1: lzop: not found
arch/arm/boot/compressed/Makefile:186: recipe for target 'arch/arm/boot/compressed/piggy_data' failed

这是没有安装lzop软件包的缘故,只要执行

sudo apt-get update

sudo apt-get install lzop

 

然后再次执行make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4即可。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是因为编译过程中找不到名为"imx6ul.h"的文件或目录所致。你可以尝试以下几个解决方法: 首先,确保你的代码中存在名为"imx6ul.h"的头文件,并且该头文件位于正确的目录下。 其次,你可以检查一下编译器的搜索路径,看看是否正确设置了头文件的路径。你可以在编译命令中添加"-I"选项,后面跟上头文件所在的目录路径。 另外,也可以尝试使用绝对路径来包含头文件。这样可以确保编译器能够找到该文件。 最后,如果你使用的是集成开发环境(IDE),可以查看IDE的配置文件,确认是否正确设置了头文件的路径。 总之,要解决这个错误,你需要找到"imx6ul.h"文件并正确设置编译器的搜索路径,确保编译器能够找到该文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [fatal error: boostdesc_bgm.i: No such file or directory补充文件](https://download.csdn.net/download/qq_26631621/44054087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [移植u-boot问题:include/config.h:6:10: fatal error: configs/.h: No such file or directory](https://blog.csdn.net/weixin_44410537/article/details/106084238)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [ubuntu vscode xx.h没有这个文件或目录](https://blog.csdn.net/qq_43265072/article/details/114699431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值