交叉编译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文件

 

posted @ 2023-04-11 13:44  Z_Chan  阅读(319)  评论(0编辑  收藏  举报