编译opencv后的跨平台使用问题
arm64上编译opencv得到opencv_world.so,放到x86_64平台,用CLion交叉编译arm64的程序时会报一堆的缺少依赖的so文件。
/usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: warning: libjpeg.so.8, needed by /lib/aarch64-linux-gnu/libopencv_world.so, not found (try using -rpath or -rpath-link) /usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: warning: libwebp.so.6, needed by /lib/aarch64-linux-gnu/libopencv_world.so, not found (try using -rpath or -rpath-link) /usr/lib/gcc-cross/aarch64-linux-gnu/9/../../../../aarch64-linux-gnu/bin/ld: warning: libpng16.so.16, needed by /lib/aarch64-linux-gnu/libopencv_world.so, not found (try using -rpath or -rpath-link)
其实x86_64上都有这些so文件,但不是arm64版本的so,所以导致了这个问题。拷贝arm64的这些so到x86_64上的 /usr/lib/aarch64-linux-gnu/ 文件夹里就可以解决。但是太麻烦了。
最稳妥的做法是,arm64、x86_64上都编译opencv,其中x86_64上编译两种版本的(x86_64版本的和arm64版本的)。
因为,虽然x86_64上交叉编译的arm64版本的opencv_world.so可以放到arm64平台直接用,但是imshow时报缺少GTK,这个在x86_64上编译时包含GTK失败,即使勾选了WITH_GTK也是失败,因为x86_64上没有arm64的GTK。