NET-SNMP Android上的编译(基于NDK10)

之前记录的基于NDK16的SNMP Android上的编译报错很多,基本无法正常编译。后续在排查问题,发现NDK版本差异一起的这些问题,具体我们来看:

在使用NDK10的时候,我们修改脚本setenv.sh:

#! /bash/sh

**************************************************************************************************************

export NDKROOT="/home/soft7team/sikeyan/ndk/crosstools"

export PATH=$NDKROOT:$PATH

export SYSROOT=$NDKROOT/sysroot/

export CC="$NDKROOT/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT"

./configure \

--host=arm \

--prefix=/home/soft7team/sikeyan/ndk/install_dir \

--disable-FEATURE \

--disable-silent-libtool \

--disable-snmpv1 \

--disable-snmpv3 \

--enable-as-needed \

--disable-manuals \

--disable-agent \

--disable-manuals \

--disable-mibs \

--disable-mib-loading \

--disable-scripts \

--disable-mibs \

--disable-mib-loading \

--disable-des \

--disable-privacy \

--disable-md5 \

--disable-developer \

--disable-local-smux \

--disable-debugging \

--disable-snmptrapd-subagent \

--disable-mfd-rewrites \

--disable-embedded-perl \

--disable-fast-install \

--disable-libtool-lock \

--disable-perl-cc-checks \

--disable-shared \

--disable-ipv6 \

--disable-ucd-snmp-compatibility \

--disable-deprecated \

--disable-minimalist \

--disable-testing-code \

--with-endianness=little \

--without-PACKAGE \

--with-endianness=little \

--with-cflags="-s -O2 -pie -fPIE -D __ANDROID_API__=21 -D BUILD_IN_NDK" \

--with-linkflags="-pie -fPIE"

--without-opaque-special-types \

--without-kmem-usage \

--with-persistent-directory="/var/net-snmp" \

--with-copy-persistent-files="no" \

--with-default-snmp-version="2" \

--with-transports="UDP" \

--with-out-transports="UDPIPv6 TCPIPv6 TCP Unix Callback AAL5PVC IPX" \

--with-out-mib-modules="snmpv3mibs ucd_snmp agent_mibs agentx notification target utilities disman/event disman/schedule host mibII/tcpTable mibII/route_write mibII/sysORTable mibII/vacm_vars"

 

当然,介于bonic-c和gnu-c的差异,部分函数是不支持的,基本如下图报错。

对于这些报错,仔细分析,主要是snmpstat这个bin文件使用到,但是我们厂测开发其实用不到这个命令,所以可以在源码中,利用宏控制关闭。

 

当然,以上只是部分源码,具体的可以参卡服务器代码。

编译脚本中,一定要注意以上的Flag。

当然,以上所有是基于NDK10所编译出来的独立编译工具链,编译独立工具链的方法如下:

1.建立编译目录NDK,分别下载NDK(android-ndk-r10e)和snmp(5.4.21)包,并解压.

2.分别建立编译工具安装目录:crosstools 和snmp安装目录install_dir

3.在ndk编译目录,unzip ndk,执行./android-ndk-r10e/build/tools/make-standalone-toolchain.sh --platform=android-21 --install-dir=crosstools --arch=arm

 

在建立好编译环境之后:

1.在snmp目录下执行,source setenv.sh

2.make

3.make install

4.可以install_dir目录下寻找对应的bin文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值