Ошибка компиляции ядра Android

Я пытаюсь скомпилировать ядро ​​Android (cyanogen) для Samsung Galaxy mini в соответствии с этими инструкциями:

Я использую CM-7.

Я выполнил следующие шаги:

  1. Загрузите исходный код ядра.

  2. Настраиваем сборку:

    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
    
  3. Сделайте сборку:

     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

Если кто может подскажите, пожалуйста, как решить эту проблему.


person uyaseen    schedule 13.03.2012    source источник
comment
Проверьте мой отредактированный ответ. Посмотрим, поможет ли это.   -  person Pavan Manjunath    schedule 13.03.2012


Ответы (2)


Попробуйте включить этот заголовок

#include<asm/io.h>

Если это не сработает, просмотрите все определения iowrite16be
http://lxr.free-electrons.com/ident?i=iowrite16be

Выберите подходящий заголовок в зависимости от вашей архитектуры.

ИЗМЕНИТЬ. Обычно implicit declaration of function xyz() является предупреждением. Возможно, в вашей системе произошла ошибка с -Werror-implicit-function-declaration. Вы можете найти это в своей структуре сборки и попытаться снять (хотя это не хорошая практика, но в любом случае вы можете это сделать, если хотите, чтобы работа была выполнена). Но если iowrite16be действительно отсутствует , то даже этот метод не поможет вам от гнева компоновщика.

person Pavan Manjunath    schedule 13.03.2012
comment
включая заголовок #include ‹asm / io.h› не исправил ошибку, но я попробую остальные заголовки, спасибо за ваш ответ. - person uyaseen; 13.03.2012
comment
удаление -Werror-implicit-function-декларация из make-файла устранило ошибку, спасибо за вашу постоянную помощь. :) - person uyaseen; 14.03.2012
comment
@usamayaseen Рад это слышать :) - person Pavan Manjunath; 14.03.2012

Вы также можете просто добавить определение самостоятельно:

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

Просто добавьте его прямо над функцией ttl_set_value ().

person Kenneth    schedule 02.10.2013