LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1226|回复: 10

在lfs下编译nvidia驱动的问题

[复制链接]
发表于 2003-1-4 02:56:35 | 显示全部楼层 |阅读模式
装nvidia驱动之前,已经按tram兄写的那样手动在/dev目录下创建设备。
cd /dev
mknod nvidia0 c 195 0
mknod nvidia1 c 195 1
mknod nvidia2 c 195 2
mknod nvidia3 c 195 3
mknod nvidiactl c 195 255
and add 'alias char-major-195 NVdriver' to /etc/modules.conf

编译NVIDIA_kernel-1.0-3123这个包时出错:
nv.c:2903: parse error before ')' token
nv.c: In function `nv_agp_retrieve_mapping':
nv.c:2929: parse error before ')' token
/usr/include/linux/highmem.h: At top level:
nv.c:155: storage size of `nv_fops' isn't known
nv.c:1037: storage size of `nv_vm_ops' isn't known
make: *** [nv.o] Error 1

换成高版本的驱动,NVIDIA_kernel-1.0-4050也是出错:
echo \#define NV_COMPILER \"`cc -v 2>&1 | tail -1`\" > nv_compiler.h
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar  -O -MD -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -DIA64=1 -D_LINUX64=1 -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE  -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4050   -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNV_64_BITS -DNVCPU_IA64_LINUX -DNVCPU_IA64  -I. -I/usr/src/linux/include -Wno-cast-qual nv.c
cc1: invalid option `fixed-range=f10-f15,f32-f127'
make: *** [nv.o] Error 1

我的内核版本是2.5.53,显卡是tnt2 m64 16m显存,请大家帮忙,谢谢
发表于 2003-1-4 03:23:08 | 显示全部楼层
nv.c:2903: parse error before ')' token
nv.c:2929: parse error before ')' token
这两个地方看起来是少分号啊,你把源文件打开看看?
 楼主| 发表于 2003-1-4 17:56:42 | 显示全部楼层
刚发现nvidia的驱动不支持2.5的内核,我将内核改成2.4.20,编译NVIDIA_kernel-1.0-3123,出错提示变成:

which: no mktemp in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin)
touch: invalid option --q
try 'touch --help' for more information
makedevices.sh:fatal error,mktemp faild
make: ***[package-install] error 1

请大家帮忙,谢谢
发表于 2003-1-4 17:58:19 | 显示全部楼层

Re: 在lfs下编译nvidia驱动的问题

换2.4.x版的内核吧
最初由 mdi 发布
装nvidia驱动之前,已经按tram兄写的那样手动在/dev目录下创建设备。
cd /dev
mknod nvidia0 c 195 0
mknod nvidia1 c 195 1
mknod nvidia2 c 195 2
mknod nvidia3 c 195 3
mknod nvidiactl c 195 255
and add 'alias char-major-195 NVdriver' to /etc/modules.conf

编译NVIDIA_kernel-1.0-3123这个包时出错:
nv.c:2903: parse error before ')' token
nv.c: In function `nv_agp_retrieve_mapping':
nv.c:2929: parse error before ')' token
/usr/include/linux/highmem.h: At top level:
nv.c:155: storage size of `nv_fops' isn't known
nv.c:1037: storage size of `nv_vm_ops' isn't known
make: *** [nv.o] Error 1

换成高版本的驱动,NVIDIA_kernel-1.0-4050也是出错:
echo \#define NV_COMPILER \"`cc -v 2>&1 | tail -1`\" > nv_compiler.h
cc -c -Wall -Wimplicit -Wreturn-type -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wcast-qual -Wno-multichar  -O -MD -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -ffixed-r13 -mfixed-range=f10-f15,f32-f127 -falign-functions=32 -DIA64=1 -D_LINUX64=1 -DNTRM -D_GNU_SOURCE -D_LOOSE_KERNEL_NAMES -D__KERNEL__ -DMODULE  -DNV_MAJOR_VERSION=1 -DNV_MINOR_VERSION=0 -DNV_PATCHLEVEL=4050   -DNV_UNIX -DNV_LINUX -DNV_INT64_OK -DNV_64_BITS -DNVCPU_IA64_LINUX -DNVCPU_IA64  -I. -I/usr/src/linux/include -Wno-cast-qual nv.c
cc1: invalid option `fixed-range=f10-f15,f32-f127'
make: *** [nv.o] Error 1

我的内核版本是2.5.53,显卡是tnt2 m64 16m显存,请大家帮忙,谢谢
发表于 2003-1-4 17:59:21 | 显示全部楼层
和我一样,赶快去网上搞个mktemp装上
最初由 mdi 发布
刚发现nvidia的驱动不支持2.5的内核,我将内核改成2.4.20,编译NVIDIA_kernel-1.0-3123,出错提示变成:

which: no mktemp in (/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin)
touch: invalid option --q
try 'touch --help' for more information
makedevices.sh:fatal error,mktemp faild
make: ***[package-install] error 1

请大家帮忙,谢谢
 楼主| 发表于 2003-1-4 18:35:08 | 显示全部楼层
呵呵,终于编好了,谢谢大家
发表于 2003-1-4 18:48:57 | 显示全部楼层
其实不用装mktemp的,在手动创建了设备后,到你那一步,已经把驱动装上了,只要再装glx就行了。
发表于 2003-1-4 21:57:54 | 显示全部楼层
哦??
不过mktemp用来干什么??
还没仔细看脚本
最初由 tram 发布
其实不用装mktemp的,在手动创建了设备后,到你那一步,已经把驱动装上了,只要再装glx就行了。
发表于 2003-1-5 13:35:33 | 显示全部楼层
最初由 laughter 发布
哦??
不过mktemp用来干什么??
还没仔细看脚本

mktemp是用来创建一个具有唯一文件名的临时文件。在某些安装程序的脚本运行时,需要先把设置参数放到一个临时文件中去,完成之后再把这个临时文件复制到系统目录和用户主目录中,改名成配置文件。因为linux是多用户,多任务的操作系统,在生成文件名时有可能会发生冲突,所以需要用一个mktemp来生成不与其它临时文件重名的临时文件。
发表于 2003-1-5 16:27:15 | 显示全部楼层
这个mktemp已经被认为是不安全的脚本了,它的临时文件名不是随机的,而是在事前可以算出来的,所以现在的linux都用mkstemp
在mktemp的man页里说:
Never use mktemp(). Some implementations follow  BSD  4.3  and  replace
       XXXXXX  by  the current process id and a single letter, so that at most
       26 different names can be returned.  Since on the one  hand  the  names
       are  easy to guess, and on the other hand there is a race between test-
       ing whether the name exists and opening the file, every use of mktemp()
       is a security risk.  The race is avoided by mkstemp(3).
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表