一.在移植OpenCV之后,运行qt编译移植过来的程序出现如下问题:
/home/yyw/QtProject/MenuInstall # ./camera
./camera: error while loading shared libraries: libopencv_highgui.so.4.4: cannot open shared object file: No such file or directory
这是因为opencv的.so文件找不到,因此需要移植ldconfig到ARM开发板上,ldconfig默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.。
二、移植
1>在ubuntu的交叉编译器中拷贝ldconfig的脚本到/usr/bin下:我本地的是这个位置:
yyw@ubuntu:/$ sudo find -name ldconfig
./sbin/ldconfig
./usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/sbin/ldconfig
2>修改ldconfig的权限:chmod 777 /bin/ldconfig
3>在/etc/ 中新建文件 ld.so.conf,同时添加如下内容:
include /etc/ld.so.conf.d/*.conf
/usr/local/arm/lib/opencv/lib //opencv的.so的文件路径
4>新建文件夹 /etc/ld.so.conf.d,在文件夹下创建opencv.conf,并添加opencv的.so文件具体路径:/usr/local/arm/lib/opencv/lib
三、执行ldconfig
注意,如果出现如下警告,可以先不理会:
ldconfig: /lib/libstdc++.so.6.0.20-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
ldconfig: /lib/ld-linux-armhf.so.3 is not a symbolic link
ldconfig: /usr/lib/libiperf.so.0 is not a symbolic link