RPC server 服务程序在ARM 2410 上的移植

本文记录了作者在ARM平台上移植RPC服务的过程,包括更换系统配置、解决编译问题及验证移植成果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


上一星期整整弄了一个星期RPC中用到的portmap程序,结果还是没弄出来,

最后怀疑是内核问题


今天周一,决定给ARM 大换血,

原来的系统如下:

vivi + linux2.4.x  + cramfs根文件系统


换成了:

vivi + linux2.6.14 + NFS根文件系统


其中NFS根文件系统是由busybox-1.16.0制作而成,在做这个根文件系统过程中,在busybox中的make menuconfig 中有一个RPC server的选项,看到这个,心中已经有一种预感,这次成了!!!!


换血完成后,把原来的portmap 程序拿出来,重新编译,还是有一堆问题,小心地一个个解决了,把编译的选项一个个试试,去掉其中一个,看编译能否通过,不行,再试下一个选项,不同的编译器,不同的portmap版本,编译过程出现的错误是不一样的,所以不好说,最好是先去掉pc上的portmap , 方法是sudo apt-get remove portmap   ,,,,,, 用gcc,而不是arm-linux-gcc , 先在PC上编译成功了,在PC 上运行自己的portmap程序,当一切都通过了,再将编译器改变成arm-linux-gcc,编译ARM上运行的portmap,


编译成功的标志并不仅仅是编译通过,是能运行RPC服务程序,或者说,运行pmap_dump 或者rpcinfo -p 会有相应的提示,

如:

# ./pmap_dump                                                                                                      
        100000    2   tcp      111                                                                                                
        100000    2   udp    111                                                                                                
 805898569    1   udp    916                                                                                                
 805898569    1   tcp      918  


如果有以上的提示,那就说明移植成功了!!


只有当portmap正确运行了,运行RPC的服务程序才不会有以下的显示:


Cannot register service: RPC: Unable to receive; errno = Connection refused                                                 
unable to register (TESTPROG, TESTVERS, udp).



以下是几个有用参考资料:

请认真看以下这个资料,这个是非常详细的一个资料:

http://bbs.chinaunix.net/viewthread.php?tid=1119713


在这个资料中,按上面的做,绝对能将portmap编译成功,要注意,运行BUILD 脚本时,要这样运行 bash BUILD 否则BUILD时会出错的!!!

但我最终用的不是这个版本的,我用的是portmap_6.0


以下这个是英文版的:

http://www.tomsguide.com/us/how-to-nslu2-hack-pt2,review-297-3.html



一些错误的总结:

有时候会说
#include <tcpd.h> 找不到


解决办法是:

去下载一个包含tcpd.h的包,复制过来,最好是把tcp*.*的都复制过来,

如:tcp_wrappers_7.6.tar.gz 就有


然后错误的文件改成:

#include ”tcpd.h“


如果有以下这个错误:

: undefined reference to `__fini_array_start'
collect2: ld returned 1 exit status


这是Makefile 的编译选项 LDFLAGS  += -pie 导致的,去掉这个选项就好了!!















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值