You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台编译VINS应用时libgomp库链接失败求助

解决Android VINS应用链接libgomp失败的思路

核心原因

你添加的第三方libceres.a大概率是基于GCC编译的,依赖GCC的OpenMP实现库libgomp,但当前使用的NDK 18版本中,默认LLVM Clang工具链使用的是libomp而非libgomp,导致链接器找不到指定库。

具体解决步骤

  • 替换链接库为libomp
    修改CMakeLists.txt中target_link_libraries里的-lgomp为-lomp,NDK从r11版本开始支持LLVM的OpenMP库,clang会自动匹配对应的libomp。

  • 指定gomp库路径(需保留gomp时)
    先检查NDK的GCC工具链目录下是否存在libgomp:
    进入路径/Users/sue/Library/Android/sdk/ndk/18.1.5063045/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/,查看是否有libgomp.a或libgomp.so。如果存在,在CMakeLists中添加该路径到链接搜索路径:

    link_directories(/Users/sue/Library/Android/sdk/ndk/18.1.5063045/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/lib/gcc/aarch64-linux-android/4.9.x/)
    
  • 重新编译适配Android的libceres.a
    第三方预编译库常存在编译环境不匹配问题,建议用当前NDK 18工具链重新编译Ceres库:

    1. 配置Ceres的CMake编译环境,指定Android交叉编译工具链
    2. 若不需要OpenMP支持,添加编译选项-DCERES_USE_OPENMP=OFF
    3. 编译出适配arm64-v8a等架构的静态库,替换现有libceres.a
  • 调整NDK版本
    若上述方法无效,可尝试降级NDK到r17及以下版本(这类版本GCC工具链的libgomp支持更完善),或升级到r21+版本(对OpenMP的支持更统一)。

内容的提问来源于stack exchange,提问作者sm00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:50:23