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文件

猜你喜欢

转载自blog.csdn.net/u011494885/article/details/81625396