记录一个驱动的编译错误

[复制链接]
 楼主| keer_zu 发表于 2020-2-29 23:43 | 显示全部楼层 |阅读模式
本帖最后由 keer_zu 于 2020-2-29 23:43 编辑

一个简单的示例,makefile:

  1. KERN_DIR = /home/xxx/ag35_0111_0708/ql-ol-sdk/ql-ol-kernel/msm-3.18
  2.   
  3. all:
  4.             make -C $(KERN_DIR) M=`pwd` modules

  5. clean:
  6.             make -C $(KERN_DIR) M=`pwd` modules clean
  7.                 rm -rf modules.order

  8. obj-m    += hello.o

出现错误:
  1. ././include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory

进入内核目录,执行:

  1. make prepare

输出结果:
  1. HOSTCC  scripts/basic/fixdep
  2.   HOSTCC  scripts/kconfig/conf.o
  3.   SHIPPED scripts/kconfig/zconf.tab.c
  4.   SHIPPED scripts/kconfig/zconf.lex.c
  5.   SHIPPED scripts/kconfig/zconf.hash.c
  6.   HOSTCC  scripts/kconfig/zconf.tab.o
  7.   HOSTLD  scripts/kconfig/conf
  8. scripts/kconfig/conf  --silentoldconfig Kconfig
  9. ***
  10. *** Configuration file ".config" not found!
  11. ***
  12. *** Please run some configurator (e.g. "make oldconfig" or
  13. *** "make menuconfig" or "make xconfig").
  14. ***
  15. scripts/kconfig/Makefile:40: recipe for target 'silentoldconfig' failed
  16. make[2]: *** [silentoldconfig] Error 1
  17. Makefile:546: recipe for target 'silentoldconfig' failed
  18. make[1]: *** [silentoldconfig] Error 2
  19. make: *** No rule to make target 'include/config/auto.conf', needed by 'include/config/kernel.release'.  Stop.

于是根据提示,在内核目录执行:

  1. make menuconfig

ok后,继续执行: make prepare
得到如下结果:
  1.   CHK     include/config/kernel.release
  2.   UPD     include/config/kernel.release
  3.   WRAP    arch/arm/include/generated/asm/auxvec.h
  4.   WRAP    arch/arm/include/generated/asm/bitsperlong.h
  5.   WRAP    arch/arm/include/generated/asm/cputime.h
  6.   WRAP    arch/arm/include/generated/asm/current.h
  7.   WRAP    arch/arm/include/generated/asm/early_ioremap.h
  8.   WRAP    arch/arm/include/generated/asm/emergency-restart.h
  9.   WRAP    arch/arm/include/generated/asm/errno.h
  10.   WRAP    arch/arm/include/generated/asm/exec.h
  11.   WRAP    arch/arm/include/generated/asm/hash.h
  12.   WRAP    arch/arm/include/generated/asm/ioctl.h
  13.   WRAP    arch/arm/include/generated/asm/ipcbuf.h
  14.   WRAP    arch/arm/include/generated/asm/irq_regs.h
  15.   WRAP    arch/arm/include/generated/asm/kdebug.h
  16.   WRAP    arch/arm/include/generated/asm/local.h
  17.   WRAP    arch/arm/include/generated/asm/local64.h
  18.   WRAP    arch/arm/include/generated/asm/mcs_spinlock.h
  19.   WRAP    arch/arm/include/generated/asm/msgbuf.h
  20.   WRAP    arch/arm/include/generated/asm/param.h
  21.   WRAP    arch/arm/include/generated/asm/parport.h
  22.   WRAP    arch/arm/include/generated/asm/poll.h
  23.   WRAP    arch/arm/include/generated/asm/preempt.h
  24.   WRAP    arch/arm/include/generated/asm/resource.h
  25.   WRAP    arch/arm/include/generated/asm/rwsem.h
  26.   WRAP    arch/arm/include/generated/asm/scatterlist.h
  27.   WRAP    arch/arm/include/generated/asm/sections.h
  28.   WRAP    arch/arm/include/generated/asm/segment.h
  29.   WRAP    arch/arm/include/generated/asm/sembuf.h
  30.   WRAP    arch/arm/include/generated/asm/serial.h
  31.   WRAP    arch/arm/include/generated/asm/shmbuf.h
  32.   WRAP    arch/arm/include/generated/asm/siginfo.h
  33.   WRAP    arch/arm/include/generated/asm/simd.h
  34.   WRAP    arch/arm/include/generated/asm/sizes.h
  35.   WRAP    arch/arm/include/generated/asm/socket.h
  36.   WRAP    arch/arm/include/generated/asm/sockios.h
  37.   WRAP    arch/arm/include/generated/asm/termbits.h
  38.   WRAP    arch/arm/include/generated/asm/termios.h
  39.   WRAP    arch/arm/include/generated/asm/timex.h
  40.   WRAP    arch/arm/include/generated/asm/trace_clock.h
  41.   WRAP    arch/arm/include/generated/asm/unaligned.h
  42.   CHK     include/generated/uapi/linux/version.h
  43.   UPD     include/generated/uapi/linux/version.h
  44.   CHK     include/generated/utsrelease.h
  45.   UPD     include/generated/utsrelease.h
  46.   Generating include/generated/mach-types.h
  47.   CC      kernel/bounds.s
  48.   GEN     include/generated/bounds.h
  49.   CC      arch/arm/kernel/asm-offsets.s
  50.   GEN     include/generated/asm-offsets.h
  51.   CALL    scripts/checksyscalls.sh

然后继续编译驱动,得到以下错误:


  1. /bin/sh: 1: ./scripts/recordmcount: not found

于是继续在内核目录下执行:
  1. make modules_prepare


结果ok。继续编译驱动,通过了。


 楼主| keer_zu 发表于 2020-2-29 23:43 | 显示全部楼层
交叉编译:
  1. CROSS_COMPILE:= arm-oe-linux-gnueabi-
  2. ARCH:= arm
  3. CC:= $(CROSS_COMPILE)gcc
  4. LD:= $(CROSS_COMPILE)ld
  5. KERN_DIR = /home/xxx/ag35_0111_0708/ql-ol-sdk/ql-ol-kernel/msm-3.18

  6. all:
  7.             make -C $(KERN_DIR) M=`pwd` modules

  8. clean:
  9.             make -C $(KERN_DIR) M=`pwd` modules clean
  10.                 rm -rf modules.order

  11. obj-m    += hello.o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1478

主题

12917

帖子

55

粉丝
快速回复 在线客服 返回列表 返回顶部