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

替换libjpeg-turbo版本后编译UVCCamera遇R_386_32错误求解决

解决UVCCamera编译时libjpeg-turbo的R_386_32重定位错误

编译UVCCamera时遇到以下链接错误:

[system.err] ld: error: relocation R_386_32 cannot be used against local symbol; recompile with -fPIC
[system.err] >>> defined in ./obj/local/x86/libjpeg-turbo1500_static.a(jfdctflt-3dn.o)
[system.err] >>> referenced by jni/libjpeg-turbo-1.5.0/simd/jfdctflt-3dn.asm
[system.err] >>>               jfdctflt-3dn.o:(.text+0xB4) in archive ./obj/local/x86/libjpeg-turbo1500_static.a

回退项目版本后问题仍存在,可按以下方式添加-fPIC编译标志快速修复:

针对Android.mk构建的情况

  • 找到libjpeg-turbo模块对应的Android.mk文件,定位到LOCAL_CFLAGS配置项,添加-fPIC:
    LOCAL_CFLAGS += -fPIC
    
  • 若该模块是静态库,确保没有禁用位置无关代码的配置,同时可以给链接标志也加上:
    LOCAL_LDFLAGS += -fPIC
    

针对CMakeLists.txt构建的情况

  • 仅给libjpeg-turbo目标添加编译标志(推荐):
    target_compile_options(libjpeg-turbo PRIVATE -fPIC)
    
  • 或者全局添加C编译标志(影响所有模块):
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
    

额外修复步骤(解决回退版本仍报错的问题)

因为回退项目后仍无法编译,大概率是NDK编译缓存残留导致,执行以下操作清理缓存:

  • 执行Gradle清理命令:./gradlew clean
  • 删除项目目录下的.cxx、obj、libs文件夹,然后重新触发编译

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:27:22