LinuxSir.cn,穿越时空的Linuxsir!

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

netfilter程序的交叉编译失败

[复制链接]
发表于 2010-1-5 13:47:07 | 显示全部楼层 |阅读模式
我有一个netfilter的程序,功能主要是用来进行包分析和过滤的,在redhat9,内核版本为2.4.20-8版本下能编译通过,现在想用交叉编译环境编译后在ARM平台上使用,却编译不过。错误提示是我包含的头文件找不到。
我看了一下,我的这个程序里主要是包含了include/linux 和include/net两个目录下的头文件,这些头文件在宿主开发机的系统中都有,但是在交叉编译环境的系统头文件中linux目录下的文件都有,net目录中的文件却没有。
现在想请教前辈们,不知道是我的交叉编译环境不正确呢,还是我的程序里包含的这些文件所有的位置跟宿主主机的位置不一样还是别的原因!
发表于 2010-1-5 22:38:58 | 显示全部楼层
交叉编译环境要对应kernel的源码,make headers_install一下,需要指定ARCH,总之交叉编译内核的手册里怎么写你就怎么做。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-6 00:04:35 | 显示全部楼层
先谢过楼上的仁兄热心解答。不过恕我学浅,我有个问题是我的这个交叉编译环境是用的现成的,不是自己编译的,因此想请教,您说的make headers_install 是在建立交叉编译环境的时候做呢还是在现有的环境上做?
另外指定ARCH是指在make headers_install的时候做吗?
您说的参考手册不知是否就是这个http://www.arm.linux.org.uk/docs/kerncomp.php
回复 支持 反对

使用道具 举报

发表于 2010-1-6 18:44:14 | 显示全部楼层
是的,设置好 ARCH 和 CROSS_COMPILE 两个环境变量,然后make headers_install安装一份对ARM适用的内核header文件后,再试试编译netfilter程序。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-7 18:28:47 | 显示全部楼层
看来这个是要自己制作一个交叉编译环境啊,一般的做法在制作过程好象都没有这个步骤。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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