iptables-1.4.21 交叉编译

进入iptables-1.4.21目录后

1 首先导出交叉编译器的路径:

export PATH=$PATH:/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/


2 配置configure:

./configure  --enable-static --disable-shared --prefix=$PWD/bin CC=arm-none-linux-gnueabi-gcc --host=arm-none-linux-gnueabi

解析参考./configure --help输出。arm-none-linux-gnueabi可以替换不同的工具链名称,--enable-static --disable-shared 指定静态编译,--prefix=$PWD/bin指定make install后的安装目录,这里设置为当前目录下的bin目录

注意:iptables-1.4.21针对静态编译有BUG,加了--enable-static --disable-shared 无效,编译出来的依旧是动态的。我尝试修改Makefile也不行,可能技术不够,改的地方不对。网上说1.2之前的版本支持静态编译。


3 在当前目录下建立bin目录:mkdir bin

4 编译:make 

5 安装:make install

6 查看编译出来的文件:最终文件是xtables-multi,但是不能直接运行xtables-multi,必须建立软连接或者重命名。否则出现

ip6tables -> xtables-multi*

ip6tables-restore -> xtables-multi*

ip6tables-save -> xtables-multi*

iptables -> xtables-multi*

iptables-restore -> xtables-multi*

iptables-save -> xtables-multi*

xtables-multi*

查看是否是文件类型: file xtables-multi 
xtables-multi: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped

可以看出此动态连接。


直接运行xtables-multi,会出现以下异常信息:

/bin # xtables-multi 
ERROR: No valid subcommand given.
Valid subcommands:
 * iptables
 * main4
 * iptables-save
 * save4
 * iptables-restore
 * restore4
 * iptables-xml
 * xml
 * ip6tables
 * main6
 * ip6tables-save
 * save6
 * ip6tables-restore
 * restore6
/bin # 

这样需要建立软链接或者直接mv xtables-multi iptables即可以正常使用。

你可能感兴趣的:(iptables,动态链接,交叉编译)