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命令可以查看端口映射情况。
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命令可以查看端口映射情况。
相关文章推荐
- rpcinfo:显示portmap的有关信息
- ubuntu挂载nfs出错:mount: wrong fs type, bad option, bad superblock
- centos使用NFS服务和PORTMAP服务挂载其它机器上的硬盘分区
- 配置nfs 服务器
- RHCE课程-RH253Linux服务器架设笔记二-NFS服务器配置 推荐
- RHEL5.1单域主/从NIS服务器配置及测试 推荐
- Cannot register service: RPC: Unable to receive; errno = Connection refused
- 嵌入式linux使用rpc实现多任务过程调用
- Linux访问远程服务器文件——NFS+mount挂载
- linux中hosts.allow添加
- DDOS***介绍
- 1)SLAM——using Kinect 2) SFM--CMVS PMVS Bundler 3)VXL
- windows 通用快捷键定义 及 程序功能
- 开源 自由 java CMS - FreeCMS2.0 签字
- Vsftpd虚拟用户模式配置
- 欢迎使用CSDN-markdown编辑器
- Xcode中关于布局约束的自适应布局
- Ubuntu14.04 64bit安装Android-Studio
- java json 时期转换报错