Android内核编译错误

Android内核编译错误,android,linux,kernel,android-source,Android,Linux,Kernel,Android Source,我正在尝试为三星Galaxy mini编译android内核(cyanogen),如下所示: 我用的是CM-7 我执行了以下步骤: 下载内核源代码 配置生成: adb pull /proc/config.gz /home/user_name/android/kernel/cm-kernel/config.gz cat config.gz | gunzip > .config make ARCH=arm CROSS_COMPILE=$CCOMPILER menuconfig 进行构建

我正在尝试为三星Galaxy mini编译android内核(cyanogen),如下所示:

我用的是CM-7

我执行了以下步骤:

  • 下载内核源代码

  • 配置生成:

    adb pull /proc/config.gz /home/user_name/android/kernel/cm-kernel/config.gz 
    cat config.gz | gunzip > .config 
    make ARCH=arm CROSS_COMPILE=$CCOMPILER menuconfig
    
  • 进行构建:

     make ARCH=arm CROSS_COMPILE=$CCOMPILER -j4
    
  • 在内核开始编译并且一切正常但随后抛出错误后,以下是终端的输出:

     CC [M]  drivers/gpio/wm8994-gpio.o
     LD [M]  sound/usb/misc/snd-ua101.o
     LD [M]  sound/usb/snd-usb-audio.o
     LD [M]  sound/usb/snd-usbmidi-lib.o
     CC [M]  drivers/gpio/sch_gpio.o
     CC [M]  drivers/gpio/rdc321x-gpio.o
     LD      fs/nfs_common/built-in.o
     CC [M]  fs/nfs_common/nfsacl.o
     CC [M]  fs/nfs/direct.o
     CC      net/socket.o
     CC [M]  drivers/gpio/janz-ttl.o
     LD [M]  fs/nfs_common/nfs_acl.o
      drivers/gpio/janz-ttl.c: In function 'ttl_set_value':
      drivers/gpio/janz-ttl.c:107: error: implicit declaration of function 'iowrite16be'
      make[2]: *** [drivers/gpio/janz-ttl.o] Error 1
      make[1]: *** [drivers/gpio] Error 2
      make: *** [drivers] Error 2
      make: *** Waiting for unfinished jobs....
      CC [M]  fs/nfs/pagelist.o   
      fs/nfs/direct.c: In function 'nfs_direct_read_schedule_segment':
      fs/nfs/direct.c:364: warning: format '%zu' expects type 'size_t', but argument 5 has type 'unsigned int'
      fs/nfs/direct.c: In function 'nfs_direct_write_schedule_segment':
      fs/nfs/direct.c:799: warning: format '%zu' expects type 'size_t', but argument 5 has type 'unsigned int'
      fs/nfs/direct.c: In function 'nfs_file_direct_read':
      fs/nfs/direct.c:928: warning: format '%zd' expects type 'signed size_t', but argument 4 has type 'size_t'
      fs/nfs/direct.c: In function 'nfs_file_direct_write':
      fs/nfs/direct.c:982: warning: format '%zd' expects type 'signed size_t', but argument 4 has type 'size_t'
     CC      net/802/p8022.o
     CC [M]  fs/nfs/proc.o
     CC      net/802/psnap.o
     CC      net/802/tr.o
     CC [M]  fs/nfs/read.o
     CC      net/8021q/vlan_core.o
     CC [M]  net/8021q/vlan.o
     CC      net/802/fc.o
     CC [M]  fs/nfs/symlink.o
     CC      net/802/fddi.o
     CC [M]  net/8021q/vlan_dev.o
     CC [M]  fs/nfs/unlink.o
    

    如果有人可以,请告诉我如何解决此问题。

    尝试包含此标题

    #include<asm/io.h>
    
    #包括

    根据您的体系结构选择适当的标头


    编辑:通常,
    函数xyz()的隐式声明
    是一个警告。可能在您的系统中,由于
    -Werror隐式函数声明
    而被迫出错。你可以在你的构建结构中搜索它,然后试着把它去掉(虽然它不是一个好的做法,但无论如何你都可以做到,如果你想完成工作的话),但是如果
    iowrite16be
    真的丢失了,那么即使是这种方法也无法帮助你从链接器的愤怒中解脱出来。

    你也可以自己添加定义:

    void iowrite16be(u8 shadow, void __iomem* port);
    

    只需将其添加到ttl_set_value()函数的正上方。

    包含标题#include没有修复错误,但我将尝试其余标题,感谢您的响应。从makefile中删除-Werror隐式函数声明修复了错误,感谢您的持续帮助。:)@usamayaseen很高兴听到:)检查我编辑的答案。看看是否有帮助。