当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 编译linux device driver 3rd上面的程序的问题
帖子发表于 : 2006-05-14 19:12 

注册: 2006-05-14 18:55
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
root@fantry:~# uname -r
2.6.12-9-386
root@fantry:~# apt-get install linux-headers-2.6.12-9-386
Reading package lists... Done
Building dependency tree... Done
linux-headers-2.6.12-9-386 is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
root@fantry:~# cd /usr/src/sbull/
root@fantry:/usr/src/sbull# ls -l
total 28
-rw-r--r-- 1 root src 682 2006-05-14 17:16 Makefile
-rw-r--r-- 1 root src 10663 2006-05-14 16:59 sbull.c
-rw-r--r-- 1 root src 2025 2006-05-14 16:59 sbull.h
-rw-r--r-- 1 root src 1146 2006-05-14 16:59 sbull_load
-rw-r--r-- 1 root src 184 2006-05-14 16:59 sbull_unload
root@fantry:/usr/src/sbull# cat Makefile
# Comment/uncomment the following line to disable/enable debugging
#DEBUG = y


# Add your debugging flag (or not) to CFLAGS
ifeq ($(DEBUG),y)
DEBFLAGS = -O -g -DSBULL_DEBUG # "-O" is needed to expand inlines
else
DEBFLAGS = -O2
endif

CFLAGS += $(DEBFLAGS)
CFLAGS += -I..

ifneq ($(KERNELRELEASE),)
# call from kernel build system

obj-m := sbull.o

else

KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

endif



clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

depend .depend dep:
$(CC) $(CFLAGS) -M *.c > .depend


ifeq (.depend,$(wildcard .depend))
include .depend
endif
root@fantry:/usr/src/sbull# make
make -C /lib/modules/2.6.12-9-386/build M=/usr/src/sbull modules
/usr/src/linux-headers-2.6.12-9-386/scripts/gcc-version.sh: line 11: gcc-3.4: command not found
/usr/src/linux-headers-2.6.12-9-386/scripts/gcc-version.sh: line 12: gcc-3.4: command not found
make[1]: gcc-3.4: Command not found
make[1]: Entering directory `/usr/src/linux-headers-2.6.12-9-386'
CC [M] /usr/src/sbull/sbull.o
/bin/sh: gcc-3.4: command not found
make[2]: *** [/usr/src/sbull/sbull.o] Error 127
make[1]: *** [_module_/usr/src/sbull] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.12-9-386'
make: *** [default] Error 2
root@fantry:/usr/src/sbull#
gcc -v
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,f95,objc,ada,treelang --prefix=/usr --with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-shared --with-system-zlib --libexecdir=/usr/lib --enable-nls --without-included-gettext --enable-threads=posix --program-suffix=-4.0 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.0-1.4.2.0/jre --enable-mpfr --disable-werror --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)
root@fantry:/usr/src/sbull#

请问为什么编译不过,
是不是gcc版本的问题,
但是我直接输入gcc -DMODULE -D__KERNEL__ -O2 -Wall -c -I/usr/src/linux-headers.2.6.12-9-386/include hello.c
编译出来出错,错误如下:
In file included from /usr/src/linux-headers-2.6.12-9-386/include/asm/processor.h:18,
from /usr/src/linux-headers-2.6.12-9-386/include/asm/thread_info.h:17,
from /usr/src/linux-headers-2.6.12-9-386/include/linux/thread_info.h:21,
from /usr/src/linux-headers-2.6.12-9-386/include/linux/spinlock.h:12,
from /usr/src/linux-headers-2.6.12-9-386/include/linux/capability.h:45,
from /usr/src/linux-headers-2.6.12-9-386/include/linux/sched.h:7,
from /usr/src/linux-headers-2.6.12-9-386/include/linux/module.h:10,
from hello.c:2:
/usr/src/linux-headers-2.6.12-9-386/include/asm/system.h: In function ‘__set_64bit_var’:
/usr/src/linux-headers-2.6.12-9-386/include/asm/system.h:193: warning: dereferencing type-punned pointer will break strict-aliasing rules
/usr/src/linux-headers-2.6.12-9-386/include/asm/system.h:193: warning: dereferencing type-punned pointer will break strict-aliasing rules
root@fantry:/usr/src# insmod hello.o
insmod: error inserting 'hello.o': -1 Invalid module format
这到底是怎么回事阿,我搞了好长时间了
望大人指教 阿


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-06-07 10:56 

注册: 2006-03-25 21:24
帖子: 57
送出感谢: 0 次
接收感谢: 0 次
还要安装linux-headers这个通用头文件软件包,我以前折腾好久才找到解决办法的


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-06-17 2:43 

注册: 2006-04-27 11:21
帖子: 33
送出感谢: 0 次
接收感谢: 0 次
>/usr/src/linux-headers-2.6.12-9-386/scripts/gcc-version.sh: line 11: gcc-3.4: command not found
第一个错误很明显,你的gcc脚本使用gcc-3.4,而你目前的版本为4.0,你可以安装gcc-3.4或者修改脚本使其对gcc没有版本限制

>但是我直接输入gcc -DMODULE -D__KERNEL__ -O2 -Wall -c -I/usr/src/linux-headers.2.6.12-9-386/include >hello.c

貌似并没有出错,只有一堆warning,我认为可以go on.

>root@fantry:/usr/src# insmod hello.o
>insmod: error inserting 'hello.o': -1 Invalid module format
你需要生成hello.ko文件,然后插入insmod hello.ko.
这是2.6.x和2.4.x的区别


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译