日期:2014-05-16  浏览次数:20810 次

求助:arm-linux交叉编译c程序出现的几个错误
命令:arm-linux-gcc   -DMODULE   -D__KERNEL__   -I/opt/ruiva/src/linux-2.4.21/include   -o   mypadmodule.o   -c   mykeypad.c


1:代码:static   int   key_read(struct   file   *   filp,   char   *   buf,   int   count,   loff_t   *   l)
    错误:error:   parse   error   before   "loff_t "

2:error:   `EAGAIN '   undeclared   (first   use   in   this   function)
  EAGAIN明明定义在asm-arm中的erron.h中,在命令行中指定的include中,   为什么找不到呢??

3:代码:static   struct   file_operations   key_fops   =  
{
owner:   THIS_MODULE,
poll:   key_select,
read:   key_read,
/*open:   key_open,
release:   key_close, */
};
错误:error:   variable   `key_fops '   has   initializer   but   incomplete   type
          error:   unknown   field   `poll '   specified   in   initializer
          error:   unknown   field   `read '   specified   in   initializer
而在include/linux/fs.h中明明有
struct   file_operations   {
struct   module   *owner;
loff_t   (*llseek)   (struct   file   *,   loff_t,   int);
ssize_t   (*read)   (struct   file   *,   char   *,   size_t,   loff_t   *);
ssize_t   (*write)   (struct   file   *,   const   char   *,   size_t,   loff_t   *);
int   (*readdir)   (struct   file   *,   void   *,   filldir_t);
unsigned   int   (*poll)   (struct   file   *,   struct   poll_table_struct   *);
int   (*ioctl)   (struct   inode   *,   struct   file   *,   unsigned   int,   unsigned   long);
int   (*mmap)   (struct   file   *,   struct   vm_area_struct   *);
int   (*open)   (struct   inode   *,   struct   file   *);
........


4:代码:static   devfs_handle_t   devfs_handle;
    错误:   error:   parse   error   before   "devfs_handle "

帮帮忙吧,不胜感激!

------解决方案--------------------
你这个是serch path的问题,你可以具体指定文件-include 试一试,也可以把/opt/ruiva/src/linux-2.4.21/include 加到PATH路径中试一试。
------解决方案--------------------
你把相应有错误的地方注释掉,先看能不能编译过去,然后再一个个解决。