为了让依赖于opencv编译出的so库带有尽量少的依赖, 我们需要将opencv编译成静态库(.a), 比如用下面的命令使用cmake:
mkdir build
cd build
cmake -D WITH_IPP=OFF -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_SHARED_LIBS=OFF ..
make -j4
sudo make install
但此时的问题是, 这样虽然去掉了opencv相关动态so库的依赖, 但依赖这个opencv静态库编译出的so仍然带有glibc的强依赖, 比如ldd xxx.so得到结果:
linux-vdso.so.1 => (0x00007ffefcd33000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f390b6d2000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f390b4bc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f390b0f1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f390aed4000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f390abcb000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f390a9c6000)
librt.so