交叉编译Ceres
环境需求:
You will need Android NDK r15 or higher to build Ceres solver.
eigen3我当时编译的时候自己先交叉编译了eigen3,这个东西好像只有头文件,好像不存在移植,都是通用的
编译
cmake \ -DCMAKE_TOOLCHAIN_FILE=\ $NDK_DIR/build/cmake/android.toolchain.cmake \ -DEIGEN_INCLUDE_DIR=/path/to/eigen/header \ -DANDROID_ABI=armeabi-v7a \ -DANDROID_STL=c++_shared \ -DANDROID_NATIVE_API_LEVEL=android-24 \ -DBUILD_SHARED_LIBS=ON \ -DMINIGLOG=ON \ <PATH_TO_CERES_SOURCE>
执行如上命令后,首先会遇到如下错误:undefined reference to '__android_log_write'
解决方法:打开[ceres]/internal/ceres/minglog/glog/logging.h
,搜索__android_log_write
,将带有这个函数的几行注释掉。
重新编译,最后会报错误:'libc++_shared.so' no found
解决方法:这个错误无关紧要,可以看到当前目录下的lib
目录已经生成了我们想要的库文件。
编译结果
自己找一下应该有头文件和so文件