交叉编译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文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了