我试图在Slackware 4.1上编译opencv.但是我每次都遇到以下错误.
In file included from /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:29:0,from /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:65: /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:35:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererStreamInfoClass; /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:83:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererContainerInfoClass; /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:104:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererAudioInfoClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:129:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererVideoInfoClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:159:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererSubtitleInfoClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/gstdiscoverer.h:202:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstDiscovererInfoClass; ^ In file included from /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:65:0: /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:47:9: error: 'GstMiniObjectClass' does not name a type typedef GstMiniObjectClass GstEncodingProfileClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:66:9: error: 'GstEncodingProfileClass' does not name a type typedef GstEncodingProfileClass GstEncodingContainerProfileClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:85:9: error: 'GstEncodingProfileClass' does not name a type typedef GstEncodingProfileClass GstEncodingVideoProfileClass; ^ /usr/include/gstreamer-0.10/gst/pbutils/encoding-profile.h:104:9: error: 'GstEncodingProfileClass' does not name a type typedef GstEncodingProfileClass GstEncodingAudioProfileClass; ^ /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp: In member function 'virtual bool CvCapture_GStreamer::grabFrame()': /tmp/SBo/opencv-2.4.11/modules/highgui/src/cap_gstreamer.cpp:232:57: error: 'gst_app_sink_pull_sample' was not declared in this scope sample = gst_app_sink_pull_sample(GST_APP_SINK(sink)); ^ make[2]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_gstreamer.cpp.o] Error 1
编译的配置报告如下:
-- General configuration for OpenCV 2.4.11 ===================================== -- Version control: unknown -- -- Platform: -- Host: Linux 3.10.17 i686 -- CMake: 2.8.12 -- CMake generator: Unix Makefiles -- CMake build tool: /usr/bin/gmake -- Configuration: Release -- -- C/C++: -- Built as dynamic libs?: YES -- C++ Compiler: /usr/bin/c++ (ver 4.8.2) -- C++ flags (Release): -O2 -march=i486 -mtune=i686 -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -O2 -DNDEBUG -DNDEBUG -- C++ flags (Debug): -O2 -march=i486 -mtune=i686 -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wno-narrowing -Wno-delete-non-virtual-dtor -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -- C Compiler: /usr/bin/cc -- C flags (Release): -O2 -march=i486 -mtune=i686 -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -O2 -DNDEBUG -DNDEBUG -- C flags (Debug): -O2 -march=i486 -mtune=i686 -fsigned-char -W -Wall -Werror=return-type -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wno-narrowing -fdiagnostics-show-option -pthread -march=i686 -fomit-frame-pointer -msse -msse2 -msse3 -mfpmath=sse -ffunction-sections -g -O0 -DDEBUG -D_DEBUG -- Linker flags (Release): -- Linker flags (Debug): -- Precompiled headers: NO -- -- OpenCV modules: -- To be built: core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib stitching superres ts videostab -- Disabled: world -- Disabled by dependency: - -- Unavailable: androidcamera dynamicuda java python viz -- -- GUI: -- QT 4.x: YES (ver 4.8.5 EDITION = OpenSource) -- QT OpenGL support: NO -- OpenGL support: NO -- VTK support: NO -- -- Media I/O: -- ZLib: /usr/lib/libz.so (ver 1.2.8) -- JPEG: /usr/lib/libjpeg.so (ver 80) -- PNG: /usr/lib/libpng.so (ver 1.4.12) -- TIFF: /usr/lib/libtiff.so (ver 42 - 3.9.7) -- JPEG 2000: build (ver 1.900.1) -- OpenEXR: build (ver 1.7.1) -- -- Video I/O: -- DC1394 1.x: NO -- DC1394 2.x: YES (ver 2.2.2) -- FFMPEG: NO -- codec: NO -- format: NO -- util: NO -- swscale: NO -- gentoo-style: NO -- GStreamer: -- base: YES (ver 0.10.36) -- video: YES (ver 0.10.36) -- app: YES (ver 0.10.36) -- riff: YES (ver 0.10.36) -- pbutils: YES (ver 0.10.36) -- OpenNI: NO -- OpenNI PrimeSensor Modules: NO -- PvAPI: NO -- GigEVisionSDK: NO -- UniCap: NO -- UniCap ucil: NO -- V4L/V4L2: Using libv4l1 (ver 0.9.5) / libv4l2 (ver 0.9.5) -- XIMEA: NO -- Xine: NO -- -- Other third-party libraries: -- Use IPP: NO -- Use Eigen: NO -- Use TBB: NO -- Use OpenMP: NO -- Use GCD NO -- Use Concurrency NO -- Use C=: NO -- Use Cuda: NO -- Use OpenCL: YES -- -- OpenCL: -- Version: dynamic -- Include path: /tmp/SBo/opencv-2.4.11/3rdparty/include/opencl/1.2 -- Use AMD FFT: NO -- Use AMD BLAS: NO -- -- Python: -- Interpreter: /usr/bin/python2 (ver 2.7.5) -- -- Java: -- ant: NO -- JNI: /usr/lib/java/include /usr/lib/java/include/linux /usr/lib/java/include -- Java tests: NO -- -- Documentation: -- Build Documentation: NO -- Sphinx: NO -- PdfLaTeX compiler: /usr/share/texmf/bin/pdflatex -- Doxygen: YES (/usr/bin/doxygen) -- -- Tests and samples: -- Tests: YES -- Performance tests: YES -- C/C++ Examples: NO -- -- Install path: /usr -- -- cvconfig.h is in: /tmp/SBo/opencv-2.4.11/build
我从下面的链接查看了opencv要求
我需要ffmpeg或libav包,这是我在标准slackware 14.1包下找不到的.但我完全安装了gstreamer(gstreamer,gst-pluigns-base,以及好),我上面遇到的错误肯定与gstreamer有关.
解决方法
我通过安装libgstreamer-plugins-base1.0-dev修复了这个问题.在此之前,CMake检测到GStreamer版本0.10.36,之后是1.4.5.