这是一篇开发的日常记录,现在发现做备忘越来越很重要了,一件事情几个月前做的,再次重新做一遍,尤其是这类的环境搭建,整个过程的坑又得重新跳一遍,太耗时了,这次先大概记录下来,方便后续回溯:
Windows采用的是:android-ndk-r13b-windows-x86_64;
Linux采用的是:android-ndk-r13-linux-x86_64
./make-standalone-toolchain.sh --platform=android-19 --toolchain=arm-linux-androideabi-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/arm
./make-standalone-toolchain.sh --platform=android-19 --toolchain=x86-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/x86
./make-standalone-toolchain.sh --platform=android-19 --toolchain=mipsel-linux-android-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/mips
./make-standalone-toolchain.sh --platform=android-21 --toolchain=aarch64-linux-android-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/arm64
./make-standalone-toolchain.sh --platform=android-21 --toolchain=x86_64-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/x86_64
./make-standalone-toolchain.sh --platform=android-21 --toolchain=mips64el-linux-android-4.9 --install-dir=/media/disk2/opt/ndk/android-ndk-r13/standalone_toolchain/mips64
为什么platform有的是=android-19,有的是=android-21,为啥呢?
这是为了最大程度的兼容,19的ndk里面没有64位,21才支持64位,这里就遇到了一个问题,今天在进行编译的时候,开始全部用的是21,结果报错:
error: undefined reference to 'signal'
error: undefined reference to 'stpcpy'
具体原因:
在android-19 以前都是有这些内部方法的定义的,但是从android-21后没有定义此方法了。
三、设置NDK_HOME环境变量
在做Android静态库编译前,要修改/etc/profile,更新环境变量;
四、编译NDK
ndk-build
LOCAL_SHARED_LIBRARIES :=
ifeq (${TARGET_ARCH_ABI},armeabi)
TOOLCHAIN_NAME=arm
else ifeq (${TARGET_ARCH_ABI},armeabi-v7a)
TOOLCHAIN_NAME=arm
else ifeq (${TARGET_ARCH_ABI},arm64-v8a)
TOOLCHAIN_NAME=arm64
else
TOOLCHAIN_NAME=${TARGET_ARCH_ABI}
endif
LOCAL_LDLIBS :=
LOCAL_MODULE := EasyRTSPClient
LOCAL_C_INCLUDES += ${LOCAL_PATH}/RTSP/Include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Include
LOCAL_LDLIBS += -L$(LOCAL_PATH)/RTSP/Android/$(TOOLCHAIN_NAME) -leasyrtspclient
LOCAL_CFLAGS += -D__RTSP__
LOCAL_LDLIBS += -llog
LOCAL_LDLIBS += -L$(STL_PATH) -lgnustl_static
APP_CPPFLAGS += -fexceptions
include $(BUILD_SHARED_LIBRARY)
!!!注意:有些博客铁定不要信,比较坑,比如有些博客中描述的在Android.mk中加入LOCAL_ALLOW_UNDEFINED_SYMBOLS := true,这种属于掩耳盗铃,害人不浅!!!
其他的后续再做补充;
EasyDarwin开源流媒体服务器:www.EasyDarwin.org
EasyDSS高性能互联网直播服务:www.EasyDSS.com
EasyNVR安防视频可视化服务:www.EasyNVR.com
EasyNVS视频综合管理平台:www.EasyNVS.com
EasyNTS云组网:www.EasyNTS.com
EasyGBS国标GB/T28181服务器:www.EasyGBS.com
EasyRTC视频会议解决方案:www.EasyRTC.cn
Copyright © TSINGSEE.com Team 2012-2019