一,编译libsgm的时候遇到:
/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
return (char *) memcpy (__dest, __src, __n) + __n;
解决方法:
cmake .. -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES"
增加后面这个flag的设置就可以了。
二,编译libsgm遇到error
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_window.c.o): undefined reference to symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
sample/movie/CMakeFiles/stereo_movie.dir/build.make:172: recipe for target 'sample/movie/stereo_movie' failed
make[2]: *** [sample/movie/stereo_movie] Error 1
这个是没有找到glfw的lib,用pkg-config查看缺少的包,安装上。
在cmakelist文件里面添加
find_package(X11 REQUIRED)
然后需要把lib加入到工程里,如下有X11的都是为X11增加进去的。
TARGET_LINK_LIBRARIES(stereo_movie sgm ${CUDA_LIBRARIES} ${OpenCV_LIBS} ${GLEW_LIBRARIES} ${GLFW_LIBRARY} ${OPENGL_LIBRARY} ${X11_Xrandr_LIB} ${X11_Xi_LIB} ${X11_Xrender_LIB} ${X11_Xdamage_LIB} ${X11_Xxf86vm_LIB} ${X11_Xext_LIB} ${X11_X11_LIB} ${X11_Xinerama_LIB} ${X11_Xcursor_LIB})
然后编译成功。