当前位置: 首页 > 工具软件 > nfs-rpc > 使用案例 >

交叉编译nfs-utils

申屠昆
2023-12-01

NFS在信息传送中依赖RPC协议,NFS服务端需要安装rpcbind和nfs-utils,客户端只需要安装 nfs-utils。

交叉编译比x86上编译复杂一些,主要是交叉编译环境不能使用软件仓库中的程序,需要下载依赖库的源码,在交叉编译环境编译、安装后才能使用。

rpcbind依赖libtirpc;nfs-utils依赖libtirpc、libevent、device-mapper

先编译这些依赖库,./configure指定交叉编译参数,其中arm-hisiv400-linux-gcc是个人使用的Hi3536芯片提供的SDK:

./configure CC=arm-hisiv400-linux-gcc --host=arm-linux prefix=/usr/arm/xxx

其中device-mapper执行./configure 会提示” ../lib/ioctl/libdevmapper.so: undefined reference to `rpl_malloc'”,处理方法:在configure文件注释掉#define malloc rpl_malloc

 

这些依赖库make&&make install之后,编译rpcbind和nfs-utils时加上他们的lib和include目录

rpcbind:

./configure CC=arm-hisiv400-linux-gcc --host=arm-linux LDFLAGS="-L/usr/arm/tirpc/lib" CPPFLAGS="-I/usr/arm/tirpc/include/tirpc" --with-systemdsystemunitdir=no prefix=/usr/arm/rpcbind

这里禁用了systemd。如果报错”No package 'libtirpc' found”,在PKG_CONFIG_PATH增加tirpcpkgconfig目录:

export PKG_CONFIG_PATH=/usr/arm/tirpc/lib/pkgconfig:$PKG_CONFIG_PATH

 

nfs-utils编译:

./configure CC=arm-hisiv400-linux-gcc --host=arm-linux LDFLAGS="-L/usr/arm/tirpc/lib -L/usr/arm/event/lib -L/usr/arm/devmapper/lib" CPPFLAGS="-I/usr/arm/tirpc/include/tirpc/rpc -I/usr/arm/event/include -I/usr/arm/devmapper/include" --enable-gss=no --disable-uuid --without-tcp-wrappers --prefix=/usr/arm/nfs

configure通过之后执行make

程序移植到嵌入式对应目录后,启动rpcbind和rpc.nfsd,如果启动失败查看错误提示或系统日志/var/log/messages,根据错误提示处理

 类似资料: