您的位置:首页 > 其它

iMX257下portmap服务移植

2015-07-05 09:35 591 查看
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命令可以查看端口映射情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  portmap