您的位置:程序门 -> linux/unix社区 -> 内核及驱动程序研究区



我不会安装内核,pci_register_driver不能使用,我也大量发分~~~


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


我不会安装内核,pci_register_driver不能使用,我也大量发分~~~[已结贴,结贴人:caoren74]
发表于:2007-05-17 12:20:58 楼主
为什么编译时错误:pci_register_driver没有声明~~~!!!!  
我下载了linux-2.6.20.tar.gz   文件,怎么安装内核建立内核树啊,会不会很麻烦呢??
发表于:2007-05-17 12:36:231楼 得分:90
还不如生级呢...
发表于:2007-05-18 11:35:032楼 得分:0
如何升级linux内核
主要的部分,没有详细写说明:
1、下载内核文件如:linux-2.6.20.tar.gz   ftp://ftp.kernel.org/pub/linux/kernel/   拷贝到/usr/src目录并解压缩。
#   cd   /usr/src
#   tar   zvxf   linux-2.6.20.tar.gz
2、进入解压目录。(/usr/src/linux-2.6.20.tar.gz,视文件名而定)

ln   –s   linux-2.6.20   linux,因为在ipvs-1.24中的makefile文件中默认指定kernel   source的路径为:kernelsource   =   /usr/src/linux  
#   cd   /usr/src/linux-2.6.20.tar.gz
#   make   mrproper
#   make   xconfig
#   make   menuconfig(如果需要   virtual   server   configuration,则需要执行此项)执行make   menuconfig时,我们将进入一个图形化的界面,在其中可以对linux   kernel进行详细设置。与lvs相关的kernel选项都在“networking   options”中,进入“networking   options”,可以查看到“ip:   virtual   server   configuration”选项,将其它所有的子选项都选上。
3、进行选译,自己设定个性化的内核。完后点“save   and   exit”
4、进行编译。
#   make   dep
#   make   clean
#   make   bzimage   (i要大写哟)
5、编译模块。
#   make   modules
#   make   modules_install
#   depmod   -a
6、编译完成,开始替换文件。
#   cd   /boot
#   rm   system.map
#   rm   vmlinuz
#   mv   /usr/src/linux-2.6.20/system.map   system.map
#   mv   /usr/src/linux-2.6.20/arch/i386/boot/bzimage   vmlinux
7.修改开机设定。
grub是   /boot/grub/grub.conf文件
lilo是/etc/lilo.conf文件
可以用命令
#   mkinitrd   /boot/initrd-2.6.20.img   2.6.20来生成initrd文件。如果用命令,则会自动生成system.map   vmlinux   还会修改grub.conf文件,最后之后检查一下,看是否正确。
用grub来举例子说。(红色部分)
发表于:2007-05-18 11:35:543楼 得分:0
我按照以上方法做了一遍为什么还不能编译 pci_register_driver   啊~~~
发表于:2007-05-18 13:12:084楼 得分:10
http://dukeandbyl.bokee.com/1479853.html
发表于:2007-05-18 13:12:375楼 得分:0
或者你将报错信息直接复制到google里面去搜索一下
发表于:2007-05-18 14:17:526楼 得分:0
谁能帮我把这个简单的测试代码编译通过就行了.
例如:g++   test.cpp   -i/usr/src/linux-2.6.20/include
    #include       <linux/mm.h>      
    #include       <linux/kernel.h>      
    #include       <linux/pci.h>      
int   main()
{
pci_enable_device(0,0);
return   0;
}
有2个错误,1是找不到linux/mm.h,2是pci_enable_device没有声明.
原因就是他优先去了/usr/src/include/里然后再处理/usr/src/linux-2.6.20/include
发表于:2007-05-18 16:29:257楼 得分:0
错误:pci_enable_device在此作用域中尚未被声明
发表于:2007-05-21 11:27:508楼 得分:0
hzcpig()   说的可能是对的:
这段代码概念错误,无论是mm.h,   kernel.h,   pci.h都是内核态的头文件,你可以在模块中include他们,但你的这段main代码明显是用户态的,怎么可以包含内核头文件,模块的编译也不是g++   -c   那么简单的。

建议参考linux   device   driver   3rd中关于模块的介绍


快速检索

最新资讯
热门点击