交叉编译iptables1.4.12的问题

来源:互联网 发布:朴素贝叶斯算法matlab 编辑:程序博客网 时间:2024/05/16 14:07

  在交叉编译iptables模块时,遇到一个问题,报错提示

nfnl_osf.c:45:39: fatal error: libnfnetlink/libnfnetlink.h: No such file or directorycompilation terminated.Makefile:322: recipe for target 'nfnl_osf.o' failed

  这个问题是因为我电脑前段时间装了nfnetlink库导致。
  
  在编译iptables时会通过configure脚本动态生成Makefile,configure脚本又是通过configure.ac产生的,在这个文件里有这么几行检查libnfnetlink:

PKG_CHECK_MODULES([libnfnetlink], [libnfnetlink >= 1.0],    [nfnetlink=1], [nfnetlink=0])AM_CONDITIONAL([HAVE_LIBNFNETLINK], [test "$nfnetlink" = 1])

如果有libnfnetlink版本大于1,则定义HAVE_LIBNFNETLINK, 在Makefile.am里面使用了这个宏:

if HAVE_LIBNFNETLINKSUBDIRS         += utilsendif

即开始编译utils目录,导致里面的nfnl_osf.c文件编译不过,找不到头文件。

PKG_CHECK_MODULES这个宏只是检查了当前系统是否有libnfnetlink库,没有检查交叉编译工具链是否有,所以这个宏慎用。

看了iptables1.4.4的版本,已经没有这个问题了。

原创粉丝点击