最近在移植的时候需要将glog移植到Android上运行,在捣鼓了几天2天之后终于搞定,在此分享一下。
首选需要感谢的是https://github.com/jefby/build-glog-for-android 的作者,根据作者README中的步骤就能够编译出libglog.a了,而我在Android工程中使用APP_STL := gnustl_static , 而作者使用的是-DANDROID_STL="c++_static" ,所以如果遇到C库不兼容的情况,可以好好检查下是不是链接的c库出现了问题,具体的选项可以参考链接:https://blog.csdn.net/fpcc/article/details/72820934
脚本依赖了ANDROID_NDK_ROOT环境变量,需要正确设置为NDK的路径
下面分享一下我的步骤
git clone https://github.com/jefby/build-glog-for-android.git
cd build-glog-for-android
git clone https://github.com/google/glog/
cd glog
git checkout v0.3.5
cd ..
git clone https://github.com/gflags/gflags
cd gflags
git checkout v2.2.1
cd ..
export ANDROID_NDK_ROOT=/home/zhang/Android/Sdk_ros/android-ndk-r15c
修改build-glog.sh
原代码
cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_TOOLCHAIN_FILE="${NDK_ROOT}/build/cmake/android.toolchain.cmake" \
-DANDROID_NDK="${NDK_ROOT}" \
-DANDROID_NATIVE_API_LEVEL=${API_LEVEL} \
-DANDROID_ARM_NEON=ON \
-DANDROID_ABI="$ABI" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DANDROID_STL="c++_static" \
-Dgflags_DIR="../gflags/build/build_${ABI}" \
../../
修改后
cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
-DCMAKE_TOOLCHAIN_FILE="${NDK_ROOT}/build/cmake/android.toolchain.cmake" \
-DANDROID_NDK="${NDK_ROOT}" \
-DANDROID_NATIVE_API_LEVEL=${API_LEVEL} \
-DANDROID_ARM_NEON=ON \
-DANDROID_ABI="$ABI" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_TESTING=OFF \
-DANDROID_STL="gnustl_static" \
-Dgflags_DIR="../gflags/build/build_${ABI}" \
../../
最后执行./build-glog.sh
build.png