直接到example下的某个目录如scull下去make,会出现一堆错误
说明一下,Fedora14带内核源码的头文件(或者yum install kernel-devel安装这些头文件),没带源码,但是对于编译ldd3里的的例子,这些头文件就足够了
并且Makefile已经指定了正确的内核目录
#KERNELDIR ?= /lib/modules/$(shell uname -r)/build
所以出现的这些错误,仅仅是由内核版本不一致造成的
ldd3的例子是2.6.10内核时代的东东,而fc14的内核版本是2.6.35.6-45
2.6.35内核中更新了的一些数据结构,所以用当时参照2.6.10内核写的ldd3的例子就很可能用新内核去编译时而出错
解决方法是让ldd的例子去适应新的内核版本或者给换个2.6.10的内核去编译
error: ‘system_utsname’ undeclared
新版本没有这个东东,干脆就在那个文件里定义一个char *system_utsname="x86";然后在代码中去掉.machine
如果想拥有一个完整的内核源代码来代替fc14自带的壳,可以如下去做
到下面链接下载14的kernel即kernel-2.6.35.6-45.fc14.src.rpm
RedHat.com/pub/fedora/linux/releases/14/Fedora/source/SRPMS/
另外,15的
而13 12 11 10 9 等在此处
比如
目前的情况是这样,但不久后14 15可能也会搬到archives去
说明:也可到去下某个版本的内核源码,但是下载编译后,要给fc14换上(安装)这个内核镜像,
这样以后用这个版本的内核源码编译的内核模块在本机insmod时才能顺利通过
执行
rpm -uvh kernel-2.6.35.6-45.fc14.src.rpm
执行
说明:fedora14默认/root/rpmbuild为srpm的主目录(貌似以前版本为/usr/src/redhat/)
refer to ?id=381
执行以下命令,出现错误
[root@localhost SPECS]# rpmbuild -bp --target $(uname -m) kernel.spec Building target platforms: i686 Building for target i686 error: Failed build dependencies: xmlto is needed by kernel-2.6.35.6-45.fc14.i686 asciidoc is needed by kernel-2.6.35.6-45.fc14.i686 elfutils-devel is needed by kernel-2.6.35.6-45.fc14.i686 perl(ExtUtils::Embed) is needed by kernel-2.6.35.6-45.fc14.i686
把缺少的东东分别安装一下yum install xmlto
yum intsall asciidoc
yum install elfutils-devel
yum install perl-ExtUtils-Embed.noarch (this refers to )
重新执行上面那个命令,
源码已经塞进了/root/rpmbuild/BUILD
[root@localhost rpmbuild]# ls BUILD BUILDROOT RPMS SOURCES SPECS SRPMS [root@localhost rpmbuild]# cd BUILD [root@localhost BUILD]# ls kernel-2.6.35.fc14 [root@localhost BUILD]# ls kernel-2.6.35.fc14/ linux-2.6.35.i686 vanilla-2.6.35 [root@localhost BUILD]# ls kernel-2.6.35.fc14/linux-2.6.35.i686/ arch config-rhel-generic fs net block configs include README config-arm config-s390x init REPORTING-BUGS config-debug config-sparc64-generic ipc samples config-generic config-x86_64-generic Kbuild scripts config-i686-PAE config-x86-generic kernel security config-ia64-generic COPYING lib sound config-nodebug CREDITS MAINTAINERS tools config-powerpc32-generic crypto Makefile usr config-powerpc32-smp Documentation merge.pl virt config-powerpc64 drivers mm config-powerpc-generic firmware modules.order [root@localhost BUILD]# cd kernel-2.6.35.fc14/linux-2.6.35.i686/ [root@localhost linux-2.6.35.i686]#
执行