[Bug 698627] opencv: doesn't build with opencv 2.4.5

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sat Apr 27 16:17:04 PDT 2013


https://bugzilla.gnome.org/show_bug.cgi?id=698627
  GStreamer | gst-plugins-bad | 1.x

--- Comment #12 from Todd Agulnick <todd at agulnick.com> 2013-04-27 23:16:59 UTC ---
Daniel, the plot definitely thickens. libtool seems to behave differently with
respect to the explicit-path libs depending on whether there's c++ in the mix.

Here's what happens when I run make --just-print:

echo "  CXXLD   " libgstopencv.la;/bin/sh ../../libtool --silent --tag=CXX
--tag=disable-static  --mode=link g++ -D_REENTRANT
-I/Users/todd/gstreamer/include/gstreamer-1.0
-I/usr/local/Cellar/glib/2.36.0/include/glib-2.0
-I/usr/local/Cellar/glib/2.36.0/lib/glib-2.0/include
-I/usr/local/opt/gettext/include  -DGST_USE_UNSTABLE_API  -DG_THREADS_MANDATORY
-DG_DISABLE_DEPRECATED -Wall -Wmissing-declarations -Wredundant-decls
-Wwrite-strings -Wformat-nonliteral -Wformat-security -Winit-self
-Wmissing-include-dirs -Waddress -Wno-multichar -Werror -Wno-non-virtual-dtor  
  -DGST_DISABLE_DEPRECATED -I/usr/local/Cellar/opencv/2.4.5/include/opencv
-I/usr/local/Cellar/opencv/2.4.5/include   -module -avoid-version
-export-symbols-regex '^_*gst_plugin_.*' -no-undefined  -o libgstopencv.la
-rpath /Users/todd/gstreamer/lib/gstreamer-1.0 libgstopencv_la-gstopencv.lo
libgstopencv_la-gstopencvvideofilter.lo libgstopencv_la-gstopencvutils.lo
libgstopencv_la-gstcvdilate.lo libgstopencv_la-gstcvdilateerode.lo
libgstopencv_la-gstcvequalizehist.lo libgstopencv_la-gstcverode.lo
libgstopencv_la-gstcvlaplace.lo libgstopencv_la-gstcvsmooth.lo
libgstopencv_la-gstcvsobel.lo libgstopencv_la-gstedgedetect.lo
libgstopencv_la-gstfaceblur.lo libgstopencv_la-gstfacedetect.lo
libgstopencv_la-gsthanddetect.lo libgstopencv_la-gstpyramidsegment.lo
libgstopencv_la-gsttemplatematch.lo libgstopencv_la-gsttextoverlay.lo
libgstopencv_la-gstmotioncells.lo libgstopencv_la-motioncells_wrapper.lo
libgstopencv_la-MotionCells.lo -L/Users/todd/gstreamer/lib
-L/usr/local/Cellar/glib/2.36.0/lib -L/usr/local/opt/gettext/lib
-lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl  -L/Users/todd/gstreamer/lib
-L/usr/local/Cellar/glib/2.36.0/lib -L/usr/local/opt/gettext/lib -lgstbase-1.0
-lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl 
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_calib3d.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_contrib.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_core.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_features2d.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_flann.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_gpu.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_highgui.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_imgproc.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_legacy.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_ml.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_nonfree.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_objdetect.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_ocl.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_photo.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_stitching.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_superres.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_ts.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_video.dylib
/usr/local/Cellar/opencv/2.4.5/lib/libopencv_videostab.dylib   -lgstvideo-1.0

... and here's what libtool produces when I execute the above command, omitting
--silent:

libtool: link: rm -fr  .libs/libgstopencv.exp
libtool: link: /usr/bin/nm  .libs/libgstopencv_la-gstopencv.o
.libs/libgstopencv_la-gstopencvvideofilter.o
.libs/libgstopencv_la-gstopencvutils.o .libs/libgstopencv_la-gstcvdilate.o
.libs/libgstopencv_la-gstcvdilateerode.o
.libs/libgstopencv_la-gstcvequalizehist.o .libs/libgstopencv_la-gstcverode.o
.libs/libgstopencv_la-gstcvlaplace.o .libs/libgstopencv_la-gstcvsmooth.o
.libs/libgstopencv_la-gstcvsobel.o .libs/libgstopencv_la-gstedgedetect.o
.libs/libgstopencv_la-gstfaceblur.o .libs/libgstopencv_la-gstfacedetect.o
.libs/libgstopencv_la-gsthanddetect.o .libs/libgstopencv_la-gstpyramidsegment.o
.libs/libgstopencv_la-gsttemplatematch.o .libs/libgstopencv_la-gsttextoverlay.o
.libs/libgstopencv_la-gstmotioncells.o
.libs/libgstopencv_la-motioncells_wrapper.o .libs/libgstopencv_la-MotionCells.o
  | sed -n -e 's/^.*[     ]\([BCDEGRST][BCDEGRST]*\)[     ][    
]*_\([_A-Za-z][_A-Za-z0-9]*\)$/\1 _\2 \2/p' | sed '/ __gnu_lto/d' |
/usr/bin/sed 's/.* //' | sort | uniq > .libs/libgstopencv.exp
libtool: link: /usr/bin/grep -E -e "^_*gst_plugin_.*" ".libs/libgstopencv.exp"
> ".libs/libgstopencv.expT"
libtool: link: mv -f ".libs/libgstopencv.expT" ".libs/libgstopencv.exp"
libtool: link: sed -e 's,^,_,' < .libs/libgstopencv.exp >
.libs/libgstopencv-symbols.expsym
libtool: link: g++  -o .libs/libgstopencv.so -bundle 
.libs/libgstopencv_la-gstopencv.o .libs/libgstopencv_la-gstopencvvideofilter.o
.libs/libgstopencv_la-gstopencvutils.o .libs/libgstopencv_la-gstcvdilate.o
.libs/libgstopencv_la-gstcvdilateerode.o
.libs/libgstopencv_la-gstcvequalizehist.o .libs/libgstopencv_la-gstcverode.o
.libs/libgstopencv_la-gstcvlaplace.o .libs/libgstopencv_la-gstcvsmooth.o
.libs/libgstopencv_la-gstcvsobel.o .libs/libgstopencv_la-gstedgedetect.o
.libs/libgstopencv_la-gstfaceblur.o .libs/libgstopencv_la-gstfacedetect.o
.libs/libgstopencv_la-gsthanddetect.o .libs/libgstopencv_la-gstpyramidsegment.o
.libs/libgstopencv_la-gsttemplatematch.o .libs/libgstopencv_la-gsttextoverlay.o
.libs/libgstopencv_la-gstmotioncells.o
.libs/libgstopencv_la-motioncells_wrapper.o .libs/libgstopencv_la-MotionCells.o
  -L/Users/todd/gstreamer/lib -L/usr/local/Cellar/glib/2.36.0/lib
-L/usr/local/opt/gettext/lib /Users/todd/gstreamer/lib/libgstvideo-1.0.dylib
/Users/todd/gstreamer/lib/libgstbase-1.0.dylib
/Users/todd/gstreamer/lib/libgstreamer-1.0.dylib -lgmodule-2.0 -ldl
-lgobject-2.0 -lglib-2.0 -lintl   
-Wl,-exported_symbols_list,.libs/libgstopencv-symbols.expsym
Undefined symbols for architecture x86_64:
  "_cvAbsDiff", referenced from:
      MotionCells::performDetectionMotionCells(_IplImage*, double, double, int,
int, long, bool, bool, int, motionmaskcoordrect*, int, motioncellidx*,
cellscolor, int, motioncellidx*, long, char*, bool, int)in
libgstopencv_la-MotionCells.o
  "_cvAdaptiveThreshold", referenced from:
      MotionCells::performDetectionMotionCells(_IplImage*, double, double, int,
int, long, bool, bool, int, motionmaskcoordrect*, int, motioncellidx*,
cellscolor, int, motioncellidx*, long, char*, bool, int)in
libgstopencv_la-MotionCells.o

[remaining undefined symbols omitted]

Note that the dylib's specified in the libtool command line don't appear on the
g++ line.

However, if I remove MotionCells.cpp from the mix, libtool generates a gcc line
that still doesn't find the referenced opencv symbols, but at least the
generated link command includes the specified dylib's.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list