编译程序在编译机可以运行,复制到其他机器无法启动程序,通过以下方式逐步排查出来
1. 在排查完export LD_LIBRARY和ldd program, md5sum ./program,对比出来没有问题
2. 通过以下对比发现编译机和运行机指令集不一样,编译机有avx 512指令集,运行机没有
grep flags /proc/cpuinfo # 列出CPU支持的所有指令集
3. 通过以下指令检查是否存在avx512指令集,最终追查是机器的opencv含avx 512指令集导致;
objdump -d /path/to/suspected/library.so | grep -i "avx512"
4. 通过以下cmake指令关闭掉编译选项
-DCMAKE_CXX_FLAGS="-O2 -march=x86-64 -mtune=generic"