一、
- 看这里说,是链接顺序的问题,于是在CMakeLists里加了这个:
-Wl,--start-group
${PROJECT_SOURCE_DIR}/lib/libngraph.so
${PROJECT_SOURCE_DIR}/lib/libinference_engine_legacy.so
libinference_engine_transformations.so
${PROJECT_SOURCE_DIR}/lib/libinference_engine.so
${PROJECT_SOURCE_DIR}/lib/libtbb.so.2
-Wl,--end-group
二、
- 又看这里说可能是链接时找不到头文件里的声明
- 参考开始的博文,使用
ldd -r
显示所有的undefined symbol - 再使用
c++filt _ZN3tbb8internal13numa_topology4fillEPi
定位错误,显示tbb::internal::numa_topology::fill(int*)
- 使用grep在新机器上没找到,去旧机器复制相应头文件
- 无效,可能是没复制全,明天再搞哈哈哈
三、解决!
- 原因:1.编译时和链接时用的动态库不是同一个;2.可执行程序依赖的库的依赖也链接成系统的库了
- 方法:export LD_LIBRARY_PATH="/home/lwd/ncs/lib:$LD_LIBRARY_PATH"
- 如果不想改变环境变量,可以看这里