Linux kernel 如何解决';drivers/net/igbvf/igbvf.h:129:15:错误:重复的成员';第'页';?

Linux kernel 如何解决';drivers/net/igbvf/igbvf.h:129:15:错误:重复的成员';第'页';?,linux-kernel,Linux Kernel,我使用ubuntu 11.10 64位,运行: sam@sam:~/download/kernel/linux-2.6.37.6$ make CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h VDSOSYM arch/x86/

我使用ubuntu 11.10 64位,运行:

  sam@sam:~/download/kernel/linux-2.6.37.6$ make
    CHK     include/linux/version.h
    CHK     include/generated/utsrelease.h
    CALL    scripts/checksyscalls.sh
    CHK     include/generated/compile.h
    VDSOSYM arch/x86/vdso/vdso-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-syscall-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
    VDSOSYM arch/x86/vdso/vdso32-syms.lds
    LD      arch/x86/vdso/built-in.o
    LD      arch/x86/built-in.o
    CC [M]  drivers/net/igbvf/ethtool.o
  In file included from drivers/net/igbvf/ethtool.c:36:0:
  drivers/net/igbvf/igbvf.h:129:15: error: duplicate member 'page'
  make[3]: *** [drivers/net/igbvf/ethtool.o] Error 1
  make[2]: *** [drivers/net/igbvf] Error 2
  make[1]: *** [drivers/net] Error 2
  make: *** [drivers] Error 2
  sam@sam:~/download/kernel/linux-2.6.37.6$
如何解决

谢谢~

------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------
PROBLEM:-1
------------------------------------------------------------------------------------------------------
gcc: error: elf_i386: No such file or directory
OBJCOPY arch/x86/vdso/vdso32-int80.so
objcopy: 'arch/x86/vdso/vdso32-int80.so.dbg': No such file
make[2]: *** [arch/x86/vdso/vdso32-int80.so] Error 1
make[1]: *** [arch/x86/vdso] Error 2
make: *** [arch/x86] Error 2
------------------------------------------------------------------------------------------------------
SOLUTION:
----------
The problem is that gcc 4.6 doesn't support anymore linker-style architecture options.
Apply the following changes to solve the problem :
In arch/x86/vdso/Makefile :
replace "-m elf_x86_64" by "-m64" on the line starting with VDSO_LDFLAGS_vdso.lds
replace "-m elf_i386" by "-m32" on the line starting with VDSO_LDFLAGS_vdso32.lds
------------------------------------------------------------------------------------------------------
PROBLEM:-2
------------------------------------------------------------------------------------------------------
In file included from drivers/net/igbvf/ethtool.c:36:0:
drivers/net/igbvf/igbvf.h: At top level:
drivers/net/igbvf/igbvf.h:129:15: error: duplicate member ‘page’
make[3]: *** [drivers/net/igbvf/ethtool.o] Error 1
make[2]: *** [drivers/net/igbvf] Error 2
make[1]: *** [drivers/net] Error 2
make: *** [drivers] Error 2
------------------------------------------------------------------------------------------------------
SOLUTION:
---------
struct igbvf_buffer {
dma_addr_t dma;
struct sk_buff *skb;`enter code here`
union {
/* Tx */
struct {
unsigned long time_stamp;
u16 length;
u16 next_to_watch;
u16 mapped_as_page;
};
/* Rx */
struct {
struct page *page; <--------------- No 1
u64 page_dma;
unsigned int page_offset;
};
};
struct page *page; <------------ No 2
};
Hmm conflict of a member with a transparent union.
Maybe older gccs didn't catch that. But it looks very broken
Comment second pointer.
------------------------------------------------------------------------------------------------------
PROBLEM 3: Similar to Problem-2
-------------------------------------------------------------------------------
In file included from drivers/scsi/pmcraid.c:57:0:
drivers/scsi/pmcraid.h: At top level:
drivers/scsi/pmcraid.h:601:8: error: duplicate member ‘sense_buffer’
drivers/scsi/pmcraid.c: In function ‘pmcraid_abort_cmd’:
drivers/scsi/pmcraid.c:2940:33: warning: variable ‘res’ set but not used [-Wunused-but-set-variable]
drivers/scsi/pmcraid.c: In function ‘pmcraid_ioctl_passthrough’:
drivers/scsi/pmcraid.c:3745:5: warning: variable ‘access’ set but not used [-Wunused-but-set-variable]
drivers/scsi/pmcraid.c: In function ‘pmcraid_check_ioctl_buffer’:
drivers/scsi/pmcraid.c:4052:6: warning: variable ‘access’ set but not used [-Wunused-but-set-variable]
make[3]: *** [drivers/scsi/pmcraid.o] Error 1
make[2]: *** [drivers/scsi] Error 2
make[1]: *** [drivers] Error 2
make[1]: Leaving directory `/home/ashish/litmus-rt'
make: *** [debian/stamp/build/kernel] Error 2
-------------------------------------------------------------------------------
SOLUTION:
----------
Comment drivers/scsi/pmcraid.h:571
-------------------------------------------------------------------------------
问题:-1 ------------------------------------------------------------------------------------------------------ gcc:错误:elf_i386:没有这样的文件或目录 对象副本arch/x86/vdso/vdso32-int80.so 对象复制:“arch/x86/vdso/vdso32-int80.so.dbg”:没有这样的文件 make[2]:***[arch/x86/vdso/vdso32-int80.so]错误1 生成[1]:***[arch/x86/vdso]错误2 make:**[arch/x86]错误2 ------------------------------------------------------------------------------------------------------ 解决方案: ---------- 问题是GCC4.6不再支持链接器风格的架构选项。 应用以下更改以解决此问题: 在arch/x86/vdso/Makefile中: 将以VDSO_LDFLAGS_VDSO.lds开头的行上的“-m elf_x86_64”替换为“-m64” 将以VDSO_LDFLAGS_vdso32.lds开头的行上的“-m elf_i386”替换为“-m32” ------------------------------------------------------------------------------------------------------ 问题:-2 ------------------------------------------------------------------------------------------------------ 在drivers/net/igbvf/ethtool.c中包含的文件中:36:0: 驱动程序/net/igbvf/igbvf.h:顶层: drivers/net/igbvf/igbvf.h:129:15:错误:重复成员“页面” 生成[3]:***[drivers/net/igbvf/ethtool.o]错误1 生成[2]:***[drivers/net/igbvf]错误2 生成[1]:***[drivers/net]错误2 make:**[驱动程序]错误2 ------------------------------------------------------------------------------------------------------ 解决方案: --------- 结构igbvf_缓冲区{ dma_addr_t dma; struct sk_buff*skb;`在此处输入代码` 联合{ /*德克萨斯州*/ 结构{ 未签名的长时间戳; u16长度; u16下一个到下一个手表; u16映射的_为_页面; }; /*接收*/ 结构{ 结构页面*页面;
------------------------------------------------------------------------------------------------------
问题:-1
------------------------------------------------------------------------------------------------------
gcc:错误:elf_i386:没有这样的文件或目录
对象副本arch/x86/vdso/vdso32-int80.so
对象复制:“arch/x86/vdso/vdso32-int80.so.dbg”:没有这样的文件
make[2]:***[arch/x86/vdso/vdso32-int80.so]错误1
生成[1]:***[arch/x86/vdso]错误2
make:**[arch/x86]错误2
------------------------------------------------------------------------------------------------------
解决方案:
----------
问题是GCC4.6不再支持链接器风格的架构选项。
应用以下更改以解决此问题:
在arch/x86/vdso/Makefile中:
将以VDSO_LDFLAGS_VDSO.lds开头的行上的“-m elf_x86_64”替换为“-m64”
将以VDSO_LDFLAGS_vdso32.lds开头的行上的“-m elf_i386”替换为“-m32”
------------------------------------------------------------------------------------------------------
问题:-2
------------------------------------------------------------------------------------------------------
在drivers/net/igbvf/ethtool.c中包含的文件中:36:0:
驱动程序/net/igbvf/igbvf.h:顶层:
drivers/net/igbvf/igbvf.h:129:15:错误:重复成员“页面”
生成[3]:***[drivers/net/igbvf/ethtool.o]错误1
生成[2]:***[drivers/net/igbvf]错误2
生成[1]:***[drivers/net]错误2
make:**[驱动程序]错误2
------------------------------------------------------------------------------------------------------
解决方案:
---------
结构igbvf_缓冲区{
dma_addr_t dma;
struct sk_buff*skb;`在此处输入代码`
联合{
/*德克萨斯州*/
结构{
未签名的长时间戳;
u16长度;
u16下一个到下一个手表;
u16映射的_为_页面;
};
/*接收*/
结构{

struct page*page;您是否以任何方式更改了源代码?看起来
igbvf.h
有语法错误。我只是下载并编译。如何解决它?谢谢~顺便说一句,我可以在同一台计算机上编译2.6.38.8而没有任何错误。您是否以任何方式更改了源代码?看起来
igbvf.h
有语法错误。我只是下载并编译。如何解决?谢谢~顺便说一句,我可以在同一台计算机上编译2.6.38.8,没有任何错误。