NDK移植编译&心得&ADB简单应用
来源:互联网 发布:锁定4g网络 编辑:程序博客网 时间:2024/06/07 08:33
I. 基本流程
1.设置环境变量
建议去官网下载最新版本的NDK,老版本很多宏定义缺失,比较麻烦。同时,之前用android-ndk-r10d,需要安装32位库环境。
yum install libstdc++-devel.i686yum install libzip.i686
#!/bin/bash# environment settingexport ANDROID_NDK_PATH=/opt/android-ndk-r14bexport TOOLCHAINS_PATH=${ANDROID_NDK_PATH}/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/binexport PATH=${PATH}:${TOOLCHAINS_PATH}export SYSROOT_PATH=${ANDROID_NDK_PATH}/platforms/android-22/arch-armexport LIBSTD_PATH=${ANDROID_NDK_PATH}/sources/cxx-stl/gnu-libstdc++/4.9#以下三个实际不需要export ANT_PATH=/usr/local/Cellar/ant/1.9.6/binexport ANDROID_SDK_HOME=/opt/AndroidSDKexport JAVA_HOME=/usr# user settingexport USING_WEBRTC=yes#export DEBUG=noexport CC=arm-linux-androideabi-gccexport CXX=arm-linux-androideabi-g++export AR=arm-linux-androideabi-arexport CFLAGS="-DANDROID -fPIC -std=c++11 -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -fexceptions -frtti -marm -march=armv7-a -mtune=cortex-a8 -mfloat-abi=softfp -mfpu=neon -mthumb -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -Wformat -Werror=format-security -g -Wall --sysroot=${SYSROOT_PATH} -I${LIBSTD_PATH}/include -I${LIBSTD_PATH}/libs/armeabi/include -I${ANDROID_NDK_PATH}/sources/android/cpufeatures/"export LDFLAGS="--sysroot=${SYSROOT_PATH} -L${LIBSTD_PATH}/libs/armeabi -lgnustl_shared -lgcc -no-canonical-prefixes -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lstdc++ -lsupc++ -lc -lm -pthread"
只要事先运行脚本,基本能应对一般的库(包括开源库)的编译。
2.修改Makefile模板,针对EXE情况做特殊处理
GCC=$(CROSS)gccGXX=$(CROSS)g++AR=$(CROSS)arifeq ($(CROSS),arm-linux-androideabi-)ifdef EXE_TARGETCFLAGS += -pie -fPIELDFLAGS += -pie -fPIEendifendif
3.PTLIB的configure参数
注意,这里的configure文件我做了少量修改。仅个人记录用。
./configure --enable-exceptions --host=armv7-a-android --disable-openssl --disable-shmaudio --enable-shmvideo=no --disable-resolver --enable-serial=no --disable-v4l2
II. 心得
1.主要的头文件目录
/opt/android-ndk-r14b/platforms/android-22/arch-arm/usr/include
/opt/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/include
2.编译错误解决
1)部分原来是/usr/include/sys下的头文件路径可能有变化,直接在incude目录下。
2)出现链接错误时,务必用arm-linux-androideabi-nm检查下是否没实现。存在头文件与库文件不一致的现象。
2.ifaddrs.h不存在
1)使用libuv库内的 android-ifaddrs即可。部分版本可能有坑。
我自己传的下载地址:
http://download.csdn.net/detail/gogoytgo/9882241
III. ADB使用
#!/bin/bash#连接adb connect <ip>#进入shelladb shell#如果有多个链路,可以这样选择,端口缺省5555adb -s <ip>:<port> shell#传输文件adb push 1.txt /storage/emulated/0/#所有动态库需要放置在/system/lib目录下,需要赋予/system目录读写权限mount -o remount,rw /system#大多数命令需要busybox驱动,例如vi,ifconfig等busybox vi 1.txt
阅读全文
0 0
- NDK移植编译&心得&ADB简单应用
- ndk 交叉编译BusyBox心得。
- ffmpeg移植NDK编译汇总
- NDK Android* 应用移植方法
- NDK Android* 应用移植方法
- adb简单应用
- NDK 编译protoc buf lite心得
- NDK 编译protoc buf lite心得
- 使用NDK移植/编译开源库(1)准备
- Android NDK 编译移植FFmpeg2.5
- NDK 安卓* 应用移植方法
- NDK 安卓* 应用移植方法
- NDK 安卓* 应用移植方法
- 最近进行Android移植以及NDK开发的编外心得
- Adb移植(一)简单分析
- Adb移植(一)简单分析
- android ndk的简单应用
- 使用NDK移植/编译开源库(2)zlib的编译
- QML之Timer定时器
- ListView填充多个item
- Java的自动装箱与拆箱(Autoboxing and Unboxing)
- 万字长文精心整理21个常用Linux命令详解及使用案例
- 选择排序(直接选择、堆排序)
- NDK移植编译&心得&ADB简单应用
- windows程序转linux遇到的坑
- C++ 将指定的标准时间转换成时间戳
- vue--购物车+计算价格+自定义过滤器
- c++中的const
- App 内存泄漏二三事
- HTML与JSP 的区别
- 5月14日 绿城育华NOIP巨石杯试卷解析
- 修改 tomcat 的启动时间 操作方法