当前位置:   article > 正文

ati-driver在2.16.18-gentoo-r2内核编译有问题及解决方法!!!_uts_release

uts_release


今天把我的gentoo同步了一下,发现内核从2.16.17-gentoo-r8升级到了2.16.18-gentoo-r2,就直接make oldconfig,升级了内核,紧接着执行module-rebuild rebuild命令来重新编译依赖于内核的相关模块。
发现在编译ati-driver的时候出现了错误,有两个常量声明无法找到:
代码:
  
  
CC [M] /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:233: error: 'UTS_RELEASE' undeclared here (not in a function) /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function 'firegl_stub_open': /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:559: warning: assignment discards qualifiers from pointer target type /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function '__ke_vm_map': /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: 'VM_SHM' undeclared (first use in this function) /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: (Each undeclared identifier is reported only once /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: for each function it appears in.) make[1]: *** [/var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o] Error 1 make: *** [_module_/var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod] Error 2 make: Leaving directory `/usr/src/linux-2.6.18-gentoo-r2' * DRM module not built >>> Source compiled. >>> Test phase [not enabled]: x11-drivers/ati-drivers-8.27.10-r1 >>> Install ati-drivers-8.27.10-r1 into /var/tmp/portage/ati-drivers-8.27.10-r1/image/ category x11-drivers * Installing fglrx module install: cannot stat `fglrx.ko': No such file or directory !!! ERROR: x11-drivers/ati-drivers-8.27.10-r1 failed. Call stack: ebuild.sh, line 1546: Called dyn_install ebuild.sh, line 1020: Called src_install ati-drivers-8.27.10-r1.ebuild, line 205: Called linux-mod_src_install linux-mod.eclass, line 510: Called die !!! doins fglrx.ko failed !!! If you need support, post the topmost build error, and the call stack if relevant. !!! This ebuild is from an overlay: '/usr/portage'
1)先看UTS_RELEASE:进入到var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/目录下,有一个make.sh脚本,发现原来是编译fglrx驱动的时候出现的问题,通过make.sh脚本内容得出脚本是从$linuxincludes/linux/version.h文件中来获取UTS_RELEASE,于是我就看了一下$linuxincludes/linux/version.h文件,发现并没有UTS_RELEASE,于是参看了以前的内核中对应的文件,而以前内核的version.h文件是包含UTS_RELEASE的预定义的,于是用grep UTS_RELEASE *命令看了一下,发现对于UTS_RELEASE的预定义18已经把它放到utsrelease.h头文件中。因此这个错误是由于新内核修改了预定义变量的位置引起的。所以,要想编译通过,只需修改$linuxincludes/linux/version.h文件,把预定义的变量加上即可,我的$linuxincludes/linux/version.h文件如下:
代码:
  
  
#define UTS_RELEASE "2.6.18-gentoo-r2" #define LINUX_VERSION_CODE 132626 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
2)VM_SHM:
第2个问题和第一个类似,于是就直接到/usr/src/linux/inlcude/linux下执行grep VM_SHM *,没有任何发现。想到是不是内核头文件更新太快,所以到/usr/include/linux下执行grep VM_SHM *,发现下面的一行:
代码:
  
  
mm.h:#define VM_SHM 0x00000000 /* Means nothing: delete it later */
原来如此,因为VM_SHM已经没有任何意义了,所以在老的.h中已经提醒大家,这个预定义将在以后会删除掉,所以在新的内核源文件中就看不到了!
不过,既然fglrx还要使用这个预定义,我们可以在mm.h中再把这一行添加上就可以了,但是也不行,原来firegl_public.c中并没有include mm.h文件,现在有两个办法,第一,使用ebuild命令将ati-drivers包解开,然后再firegl_public.c文件中手动添加一行,然后再编译、安装;第二,在一个firegl_public.c包含的头文件中添加这一行也可。
昵称: ooio_karl  时间: 2006-11-13 21:17:00
今天把我的gentoo同步了一下,发现内核从2.16.17-gentoo-r8升级到了2.16.18-gentoo-r2,就直接make oldconfig,升级了内核,紧接着执行module-rebuild rebuild命令来重新编译依赖于内核的相关模块。
发现在编译ati-driver的时候出现了错误,有两个常量声明无法找到:
代码:
   
   
CC [M] /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:233: error: 'UTS_RELEASE' undeclared here (not in a function) /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function 'firegl_stub_open': /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:559: warning: assignment discards qualifiers from pointer target type /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c: In function '__ke_vm_map': /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: 'VM_SHM' undeclared (first use in this function) /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: (Each undeclared identifier is reported only once /var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.c:3159: error: for each function it appears in.) make[1]: *** [/var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/firegl_public.o] Error 1 make: *** [_module_/var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod] Error 2 make: Leaving directory `/usr/src/linux-2.6.18-gentoo-r2' * DRM module not built >>> Source compiled. >>> Test phase [not enabled]: x11-drivers/ati-drivers-8.27.10-r1 >>> Install ati-drivers-8.27.10-r1 into /var/tmp/portage/ati-drivers-8.27.10-r1/image/ category x11-drivers * Installing fglrx module install: cannot stat `fglrx.ko': No such file or directory !!! ERROR: x11-drivers/ati-drivers-8.27.10-r1 failed. Call stack: ebuild.sh, line 1546: Called dyn_install ebuild.sh, line 1020: Called src_install ati-drivers-8.27.10-r1.ebuild, line 205: Called linux-mod_src_install linux-mod.eclass, line 510: Called die !!! doins fglrx.ko failed !!! If you need support, post the topmost build error, and the call stack if relevant. !!! This ebuild is from an overlay: '/usr/portage'
1)先看UTS_RELEASE:进入到var/tmp/portage/ati-drivers-8.27.10-r1/work/common/lib/modules/fglrx/build_mod/目录下,有一个make.sh脚本,发现原来是编译fglrx驱动的时候出现的问题,通过make.sh脚本内容得出脚本是从$linuxincludes/linux/version.h文件中来获取UTS_RELEASE,于是我就看了一下$linuxincludes/linux/version.h文件,发现并没有UTS_RELEASE,于是参看了以前的内核中对应的文件,而以前内核的version.h文件是包含UTS_RELEASE的预定义的,于是用grep UTS_RELEASE *命令看了一下,发现对于UTS_RELEASE的预定义18已经把它放到utsrelease.h头文件中。因此这个错误是由于新内核修改了预定义变量的位置引起的。所以,要想编译通过,只需修改$linuxincludes/linux/version.h文件,把预定义的变量加上即可,我的$linuxincludes/linux/version.h文件如下:
代码:
   
   
#define UTS_RELEASE "2.6.18-gentoo-r2" #define LINUX_VERSION_CODE 132626 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
2)VM_SHM:
第2个问题和第一个类似,于是就直接到/usr/src/linux/inlcude/linux下执行grep VM_SHM *,没有任何发现。想到是不是内核头文件更新太快,所以到/usr/include/linux下执行grep VM_SHM *,发现下面的一行:
代码:
   
   
mm.h:#define VM_SHM 0x00000000 /* Means nothing: delete it later */
原来如此,因为VM_SHM已经没有任何意义了,所以在老的.h中已经提醒大家,这个预定义将在以后会删除掉,所以在新的内核源文件中就看不到了!
不过,既然fglrx还要使用这个预定义,我们可以在mm.h中再把这一行添加上就可以了,但是也不行,原来firegl_public.c中并没有include mm.h文件,现在有两个办法,第一,使用ebuild命令将ati-drivers包解开,然后再firegl_public.c文件中手动添加一行,然后再编译、安装;第二,在一个firegl_public.c包含的头文件中添加这一行也可。
昵称: ooio_karl  时间: 2006-11-13 21:17:00
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/308486
推荐阅读
相关标签
  

闽ICP备14008679号