+ -
当前位置:首页 → 问答吧 → 编译内核Linux-2.6.11.10时缺少文件

编译内核Linux-2.6.11.10时缺少文件

时间:2005-05-25

来源:互联网

我的FC3内核是2.6.9-1.667下了一个最新的内核Linux-2.6.11.10

#Make modules
执行了好几分钟然后出现一个错误

make[3]: *** 没有规则可以创建“net/ipv4/netfilter/ipt_TOS.o”需要的目标“net/ipv4/netfilter/ipt_TOS.c”。 停止。
make[2]: *** [net/ipv4/netfilter] 错误 2
make[1]: *** [net/ipv4] 错误 2
make: *** [net] 错误 2

然后我就到源文件里去看,没有ipt_TOS.c这个文件却有itp_tos.c,我以为是大小写搞措了就把那个大写的文件 改成小写,再编译,我时出现的错误跟原来一样只是那个大写变成小写了,

谁编译成功的能否帮我看看源码里是不是有大写跟小写的两个文件,要是有的话请传一个上来,万分感谢,要是没有那我这是怎么回事呢?

2005.10.13
总算明白了这是怎么回事了,这世间肯定只有我一人才会遇上这种事了,我想别人是不会这么变态的了。
昨天刚编译了2.6.13.4,又出现在了这样的问题,当时真是把我晕死了,百思不得其解,
因为以前编译成功了2.6.11.1于是我就把这里面的ipt_TOS.c ipt_TOS.h拷进来了,再Make
这个地方过去了,但是马上又出现在另一个问题,"没有规则创建ipt_DSCP.o"需要目标“net/ipv4/netfilter/ipt_DSCP.c”.
这时我才猛然醒悟,因为 我的把文件先解压到Windows分区再拷过来的,(真是变态,没办法,我只给Linux分了6G的空间,而所有下载的软件其它东西统统都是放到Windows分区里的),根本的原因是Windows的文件系统FAT是不区分大小写的,而Linux的EXT是区分大小写的!!!!!而偏偏内核文件里就有ipt_tos.c ipt_TOS.c ipt_dscp.c ipt_DSCP.c这样的同文件,还有很多,而在Windows人文件系统里被认为是一个相同的文件,解压的时候后面的文件都被忽略了,所以编译就会出现缺少文件了,知道这点之后把内核直接解压到/usr/src/redhat/下面去然后编译,就一切顺利了。

作者: womking   发布时间: 2005-05-25

是你内核配置不正确

作者: versace   发布时间: 2005-05-25

我昨天也这么想,但今天我什么都没有配置直接采用默认设置
make xconfig
什么也没有改保存退出
make modules
最后还是出现那个错误

请帮我看一下你的内核里是不是有net/ipv4/netfilter/ipt_TOS.c跟net/ipv4/netfilter/ipt_tos.c这两个文件

我在http://cvs.sourceforge.net/viewcvs.p...ilter/#dirlist上搜到net/ipv4/netfilter/ipt_TOS.c文件下下来但是找不到头文件

编译到这里的时候出现下面的错误
net/ipv4/netfilter/ipt_TOS.c:8:42: linux/netfilter_ipv4/ipt_TOS.h: 没有那个文件 或目录
net/ipv4/netfilter/ipt_TOS.c: In function `target':
net/ipv4/netfilter/ipt_TOS.c:21: error: dereferencing pointer to incomplete typenet/ipv4/netfilter/ipt_TOS.c:25: error: dereferencing pointer to incomplete typenet/ipv4/netfilter/ipt_TOS.c: In function `checkentry':
net/ipv4/netfilter/ipt_TOS.c:42: error: dereferencing pointer to incomplete typenet/ipv4/netfilter/ipt_TOS.c:44: error: invalid application of `sizeof' to incomplete type `ipt_tos_target_info'
net/ipv4/netfilter/ipt_TOS.c:47: error: invalid application of `sizeof' to incomplete type `ipt_tos_target_info'
net/ipv4/netfilter/ipt_TOS.c:60: error: `IPTOS_NORMALSVC' undeclared (first use in this function)
net/ipv4/netfilter/ipt_TOS.c:60: error: (Each undeclared identifier is reported only once
net/ipv4/netfilter/ipt_TOS.c:60: error: for each function it appears in.)
net/ipv4/netfilter/ipt_TOS.c: At top level:
net/ipv4/netfilter/ipt_TOS.c:69: warning: initialization makes integer from pointer without a cast
net/ipv4/netfilter/ipt_TOS.c:69: error: initializer element is not computable at load time
net/ipv4/netfilter/ipt_TOS.c:69: error: (near initialization for `ipt_tos_reg.revision')
net/ipv4/netfilter/ipt_TOS.c:69: warning: initialization from incompatible pointer type
make[3]: *** [net/ipv4/netfilter/ipt_TOS.o] 错误 1
make[2]: *** [net/ipv4/netfilter] 错误 2
make[1]: *** [net/ipv4] 错误 2
make: *** [net] 错误 2

作者: womking   发布时间: 2005-05-25

你要看的是有没有/usr/include/linux/netfilter_ipv4/ipt_TOS.h这个文件。

作者: troll   发布时间: 2005-05-25

对啊,现在就是没有这个文件了

作者: womking   发布时间: 2005-05-25

找到了谢谢

作者: womking   发布时间: 2005-05-25

但还是有错误

CC [M] net/ipv4/netfilter/ipt_TOS.o
net/ipv4/netfilter/ipt_TOS.c:69: warning: initialization makes integer from pointer without a cast
net/ipv4/netfilter/ipt_TOS.c:69: error: initializer element is not computable at load time
net/ipv4/netfilter/ipt_TOS.c:69: error: (near initialization for `ipt_tos_reg.revision')
net/ipv4/netfilter/ipt_TOS.c:69: warning: initialization from incompatible pointer type
make[3]: *** [net/ipv4/netfilter/ipt_TOS.o] 错误 1
make[2]: *** [net/ipv4/netfilter] 错误 2
make[1]: *** [net/ipv4] 错误 2
make: *** [net] 错误 2

作者: womking   发布时间: 2005-05-25

你难道没装kernel-headers,找到这个rpm安装上就可以了。

作者: troll   发布时间: 2005-05-25

从那个网址下的文件有问题还是什么原因,我不明白CVS(current version system)倒底是什么意思

作者: womking   发布时间: 2005-05-25

你就下一个版本不明的单独文件不解决问题,安装kernel-headers。

作者: troll   发布时间: 2005-05-25

安装了的,我就是我的系统里找到然后复复制到/usr/src/linux-2.6.11/include/linux/netfilter_ipv4/里去的

作者: womking   发布时间: 2005-05-25

如果安装,不用复制到内核源码目录中。这个文件到底哪里来的,我不明白。

作者: troll   发布时间: 2005-05-25

我不知道是这个版本是不是与我2.6.11想符,你可以去http://cvs.sourceforge.net/viewcvs.p...AD&view=markup
看一下

作者: womking   发布时间: 2005-05-25

你去下这个文件到底干嘛?没这个必要。把现在的源码目录删除了,然后重新解压,得到一个完整,干净的源码树,再次来过。

作者: troll   发布时间: 2005-05-25

你说的kernel-headers都在/usr/include/linux/里啊,这是原来装系统默认装上去的,但是我的FC3内核源码2.6.9没有装上去,前天我想装但是没有装上去就想下一个最新的编译一下

我在第四张源码盘上找到了kernel-2.6.9-1.667.src.rpm
然后rpmbuild --rebuild kernel-2.6.9-1.667.src.rpm
却出现了
Installing kernel-2.6.9-1.667.src.rpm
error: Architecture is not included: i386

作者: womking   发布时间: 2005-05-25

我今天早上就是重新来过的

make modules的时候 出现了
make[3]: *** 没有规则可以创建“net/ipv4/netfilter/ipt_TOS.o”需要的目标“net/ipv4/netfilter/ipt_TOS.c”。 停止。
make[2]: *** [net/ipv4/netfilter] 错误 2
make[1]: *** [net/ipv4] 错误 2
make: *** [net] 错误 2

我才去下这个ipt_TOS.c的啊

作者: womking   发布时间: 2005-05-25

你用Vanilla Kernel Source(也就是从kernel.org下载的)也可以,问题不在于此,想用FC 3自己的内核源码的话可以参考论坛几篇怎样在FC 3下通过srpm安装内核源码的帖子。

作者: troll   发布时间: 2005-05-25

这个不等于说没有ipt_TOS.c这个文件。按理说2.6内核可以自动解决依赖的问题,另外,也不用分开make bzImage和make modules,只要make就可以了。

作者: troll   发布时间: 2005-05-25

我就是没有找到这方面的贴子啊,我刚才又搜了一下还是没有搜到
本来很简单的问题,我这里却经常出错,真搞不懂

作者: womking   发布时间: 2005-05-25

我发了这个贴子求助过
http://www.linuxsir.org/bbs/showthread.php?t=200047

最后出现那种问题真是让我烦火

作者: womking   发布时间: 2005-05-25

你是说 make xconfig 后直接 make && make install 就可完成编译安装了?

作者: womking   发布时间: 2005-05-25

不make && make modules_install && make install ,不过我倾向把make install改为手动复制bzImage,System.map和config到/boot。

作者: troll   发布时间: 2005-05-25

我看了一些编译内核的贴子,有的步骤很多
make dep
make bzimage
make modules
make modules_install
make install

有的是
make modules
make modules_install
make install

我知道那个 make dep 应该是检查依赖关系
但那个make bzimage 是什么意思呢

作者: womking   发布时间: 2005-05-25

你的意思是说make install实际上也只干了复制bzImage,System.map和config到/boot这三件事?

作者: womking   发布时间: 2005-05-25

编译压缩的内核镜像,你看的适用于2.4内核。你可以在源码目录下make help查看各项的帮助。

作者: troll   发布时间: 2005-05-25

非常感谢你花这么多时间来帮我,
我很想知道上面那个问题的答案

作者: womking   发布时间: 2005-05-25

哪个问题?

作者: troll   发布时间: 2005-05-25

把开发工具,和kde开发都装上,重编译试试。

作者: versace   发布时间: 2005-05-25

引用:
作者: womking
你的意思是说make install实际上也只干了复制bzImage,System.map和config到/boot这三件事?
这个问题啊

作者: womking   发布时间: 2005-05-25

复制vmlinuz和initrd,还有更改grub.conf

作者: fallen   发布时间: 2005-05-25

不错,但我记得默认的安装路径是/根目录,如果要安装到/boot需要自己编辑一下Makefile。

作者: troll   发布时间: 2005-05-25

哦,谢谢

刚才用yum升级了一下内核,比手工下载编译快多了,但是一样是没有源码,yum只是下了一个**.i386.rpm包而没有源码包,

今天下午明白了不少东西,非常感谢你!

作者: womking   发布时间: 2005-05-25

但是我在编译2.6.10的时候也没改make file啊。。。。可能现在改进了吧。。。直接make install都帮我改好了

作者: fallen   发布时间: 2005-05-25

相关阅读 更多

热门下载

更多