iMX257下portmap服务移植

来源:互联网 发布:合成器软件 编辑:程序博客网 时间:2024/05/16 07:22
portmap-6.0.tar.bz2解压后,更改2个文件:pmap_check.c、Makefile


pmap_check.c文件中将
#include <tcpd.h>
更改为
#ifdef HOSTS_ACCESS
#include <tcpd.h>
#endif


Makefile文件在开头增加iMX257对应的编译器
CC = arm-none-linux-gnueabi-gcc

install: all
install -o root -g root -m 0755 -s portmap ${BASEDIR}/sbin
install -o root -g root -m 0755 -s pmap_dump ${BASEDIR}/sbin
install -o root -g root -m 0755 -s pmap_set ${BASEDIR}/sbin
install -o root -g root -m 0644 portmap.man ${BASEDIR}/usr/share/man/man8/portmap.8
install -o root -g root -m 0644 pmap_dump.8 ${BASEDIR}/usr/share/man/man8
install -o root -g root -m 0644 pmap_set.8 ${BASEDIR}/usr/share/man/man8
更改为
DESTDIR = $(BASEDIR)
install: all
install -o root -g root -m 0755 portmap $(DESTDIR)/sbin
install -o root -g root -m 0755 pmap_dump $(DESTDIR)/sbin
install -o root -g root -m 0755 pmap_set $(DESTDIR)/sbin
install -o root -g root -m 0644 portmap.man $(DESTDIR)/usr/share/man/man8/portmap.8
install -o root -g root -m 0644 pmap_dump.8 $(DESTDIR)/usr/share/man/man8
install -o root -g root -m 0644 pmap_set.8 $(DESTDIR)/usr/share/man/man8


移植过程中遇到的问题及处理:
【问题现象1】
使用portmap-6.0.tar.bz2解压后的文件直接编译,提示“tcpd.h: No such file or directory”
【解决方法】
将虚拟机联网(IP设置成自动获取IP),运行安装命令:
yum install tcp_wrappers
yum install tcp_wrappers-devel
之后,编译可以通过。

【问题现象2】
编译成功后下载到开发板,启动提示:line1: syntax error: unexpected “;”
百度发现:当交叉编译器使用不当时会出现该问题。该现象是由于使用默认的编译器编译成功后可以在虚拟机环境下运行,但不可以在开发板中运行。需要更改编译器为:CC = arm-none-linux-gnueabi-gcc
【解决方法】
更改makefile文件中的交叉编译器,在文件开头增加:CC = arm-none-linux-gnueabi-gcc

【问题现象3】
按上述方法操作,编译portmap时,提示:pmap_check.c:48:18: error: tcpd.h: No such file or directory
【解决方法】
提示需要-lwrap支持,也就是需要库文件libwrap.a,即需要tcp_wrappers开发包的支持。
下载开发包tcp_wrappers_7.6,编译生成libwrap.a。
1)将tcp_wrappers_7.6下的文件tcpd.h拷贝到交叉编译器的路径:
cp tcpd.h /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/ arm-none-linux-gnueabi/4.1.2/include
2)使用命令“make linux”,将编译生成的shared文件夹中的libwrap.so文件拷贝到交叉编译器的路径:
cp libwrap.so /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/lib/gcc/ arm-none-linux-gnueabi/4.1.2/

【问题现象4】
将portmap下载到开发板,提示无库文件libwrap.so.0
【解决方法】
将tcp_wrappers_7.6\shared文件夹下的libwrap.so.0传输到开发板的/lib文件夹(操作系统库文件默认文件夹)中。

【问题现象5】
运行portmap后,位于/var/run文件夹下的portmap_mapping文件为空,VXI11等需要portmap支持的应用无法正常工作。
【解决方法】

使用ifconfig命令查看LAN连接情况,仅有eth0,没有lo。需要启动回环地址:ifconfig lo up。



完成移植后使用netstat –an命令可以查看端口映射情况。

0 0
原创粉丝点击