【发布时间】:2014-05-15 05:02:39
【问题描述】:
我正在尝试在 Ubuntu 上安装 OpenCV 2.4.2 并遇到如下错误:
[ 11%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_gtk.cpp.o
In file included from /usr/local/include/glib-2.0/glib/gasyncqueue.h:30:0,
from /usr/local/include/glib-2.0/glib.h:32,
from /usr/local/include/gtk-2.0/gdk/gdktypes.h:32,
from /usr/local/include/gtk-2.0/gdk/gdkcolor.h:4,
from /usr/local/include/gtk-2.0/gdk/gdk.h:30,
from /usr/local/include/gtk-2.0/gtk/gtk.h:31,
from /opt/opencv/OpenCV-2.4.2/modules/highgui/src/window_gtk.cpp:48:
/usr/local/include/glib-2.0/glib/gthread.h:233:27: error: variable or field 'g_static_mutex_init' declared void
/usr/local/include/glib-2.0/glib/gthread.h:233:27: error: 'GStaticMutex' was not declared in this scope
/usr/local/include/glib-2.0/glib/gthread.h:233:41: error: 'mutex' was not declared in this scope
/usr/local/include/glib-2.0/glib/gthread.h:233:41: note: suggested alternative:
/usr/include/tbb/mutex.h:48:7: note: 'tbb::mutex'
我检查了所有依赖项并安装它们如下:
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
我还在 CMakeCache.txt 中添加了以下路径
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include/
感谢任何帮助。
谢谢,
席德
编辑:我根据评论切换到 QT,这让我摆脱了必须手动插入 CMakeCache.txt 的 gtk 包含。但是我仍然遇到安装错误(可能是由于 glib 包含)所以我在 CMAKE 中关闭了 GSTREAMER,现在我可以安装 opencv。这种解决方法可行吗?
【问题讨论】:
-
你为什么要使用过时的 2.4.2 ?当前的 opencv stable 是 2.4.9,您可能应该改用它
-
@berak - 我也尝试了 2.4.9 并且遇到了同样的问题
-
为什么不使用 WITH_QT 选项,新的基于 Qt 的 highgui 代码提供了比使用 GTK 的旧 highgui 代码更好的功能。而且它不使用 GTK。
-
啊,好的。很遗憾听到这个消息;(
-
@ypnos - 感谢您的建议。但是我仍然得到一个错误 [12%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/cap_gstreamer.cpp.o In包含在/usr/local/include/glib-2.0/glib/gasyncqueue.h的文件中:30:0,来自 /usr/local/include/glib-2.0/glib.h:32,来自 /usr/include/gstreamer-0.10/gst/gst.h:27,来自 /opt/OpenCV-2.4.2 /modules/highgui/src/cap_gstreamer.cpp:56: /usr/local/include/glib-2.0/glib/gthread.h:233:27: 错误:变量或字段“g_static_mutex_init”声明为无效
标签: opencv ubuntu ubuntu-12.04