交叉编译Qt程序移植ARM后出现libopencv_core.so加载错误求助
解决ARM平台Qt程序找不到libopencv_core.so的问题
确认环境变量是否生效
执行echo $LD_LIBRARY_PATH查看输出是否包含你添加的库路径。如果没有,先执行source /etc/profile临时生效;若重启后仍不生效,说明你的ARM系统可能不读取/etc/profile(比如桌面环境启动程序时),可以把环境变量添加到~/.bashrc(当前用户)或/etc/bash.bashrc(全局)。检查库的架构兼容性
这是高频踩坑点:你从Ubuntu复制的libopencv_core.so是x86架构的,ARM平台无法识别。在ARM设备上执行file libopencv_core.so,输出应包含ARM或aarch64字样;如果显示x86-64,说明复制错了库,必须替换为交叉编译生成的ARM版本opencv库。检查库的依赖链
执行ldd 你的Qt程序文件名,查看libopencv_core.so的状态:- 若显示
not found,确认库路径是否填写正确; - 若它本身依赖其他库(比如
libopencv_imgproc.so、libc.so.6等),需要将这些依赖库也复制到ARM设备的对应路径下。
- 若显示
直接将库放入系统默认路径
把libopencv_core.so复制到ARM系统的/usr/lib或/lib目录(aarch64架构可能是/usr/lib/aarch64-linux-gnu),然后执行ldconfig更新系统库缓存,程序会自动识别到库,无需依赖环境变量。操作需要sudo权限:sudo cp libopencv_core.so /usr/lib/ sudo ldconfig处理sudo启动的环境变量问题
用sudo启动程序时,默认会重置环境变量,导致LD_LIBRARY_PATH不生效。可以用sudo -E ./你的程序名保留当前用户的环境变量,或者修改sudo配置使其继承LD_LIBRARY_PATH。
内容的提问来源于stack exchange,提问作者strong zhy
相关产品推荐
相关产品推荐

