Re: gstreamer plugin library not linking against opencv shared object library - “undefined symbol” on Kubuntu

Chuck Crisler ccrisler at mutualink.net
Mon Jul 30 08:11:43 PDT 2012


The obvious question is do you have OpenCV installed on CentOS? It seems
not... In fact, I would assume that you would get a link error if you tried
building on CentOS. CentOS is a Fedora derivitive. The Red Hat developers
don't like software is isn't completely open source. OpenCV is released
under the BSD license, so it may not be easily provided to CentOS (via
rpm). You may have to download the source and build it yourself. If so, you
need to be mindful of glib version compatibility. You might also be able to
get it from rpm forge, which you should check first.

On Mon, Jul 30, 2012 at 11:02 AM, iron_guitarist1987 <
jtrinidadperez at gmail.com> wrote:

> Hello all,
>
> I have a plugin that uses OpenCV and it works perfectly on Kubuntu. Now I
> am
> trying to run the code on CentOS but when I run the pipeline, I get:
>
> $ gst-launch videotestsrc ! opencvelement ! ximagesink
> WARNING: erroneous pipeline: no element "opencvelement"
>
> When I run ldd in Kubuntu, I get:
>
>         $ ldd .libs/libOPENCVELEMENT.so
>         linux-gate.so.1 =>  (0x0060f000)
>         libgstbase-0.10.so.0 => /usr/lib/libgstbase-0.10.so.0 (0x00a74000)
>         libgstreamer-0.10.so.0 => /usr/lib/libgstreamer-0.10.so.0
> (0x00474000)
>         libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
> (0x006a2000)
>         libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0
> (0x00110000)
>         libopencv_core.so.2.3 => /usr/local/lib/libopencv_core.so.2.3
> (0x00730000)
>         libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6
> (0x00209000)
>         libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x002f4000)
>         libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00acd000)
>         libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x0031e000)
>         libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x0033c000)
>         libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0
> (0x00357000)
>         libgmodule-2.0.so.0 => /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0
> (0x0035d000)
>         libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00c9c000)
>         librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x00362000)
>         libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x0036b000)
>         libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0x00370000)
>         libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0x00e52000)
>         libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x00377000)
>         /lib/ld-linux.so.2 (0x00a10000)
>
> But when I run it on CentOS, I don't see opencv
>
>         $ ldd .libs/libOPENCVELEMENT.so
>         linux-vdso.so.1 =>  (0x00007fff7a1fd000)
>         libgstvideo-0.10.so.0 => /usr/lib64/libgstvideo-0.10.so.0
> (0x00002ba0ac9b7000)
>         libgstcontroller-0.10.so.0 => /usr/lib64/libgstcontroller-0.10.so.0
> (0x00002ba0acbc4000)
>         libgstbase-0.10.so.0 => /usr/lib64/libgstbase-0.10.so.0
> (0x00002ba0acdeb000)
>         libgstreamer-0.10.so.0 => /usr/lib64/libgstreamer-0.10.so.0
> (0x00002ba0ad03c000)
>         libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0
> (0x00002ba0ad326000)
>         libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0
> (0x00002ba0ad569000)
>         libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0
> (0x00002ba0ad76c000)
>         librt.so.1 => /lib64/librt.so.1 (0x00002ba0ad970000)
>         libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00002ba0adb7a000)
>         libz.so.1 => /lib64/libz.so.1 (0x00002ba0adeb7000)
>         libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00002ba0ae0cb000)
>         libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002ba0ae3a8000)
>         libm.so.6 => /lib64/libm.so.6 (0x00002ba0ae6a8000)
>         libc.so.6 => /lib64/libc.so.6 (0x00002ba0ae92b000)
>         libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002ba0aec83000)
>         libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ba0aee91000)
>         libdl.so.2 => /lib64/libdl.so.2 (0x00002ba0af0ac000)
>         /lib64/ld-linux-x86-64.so.2 (0x0000003f6c800000)
>
>
> Here is my makefile.am, which is the same on both OS
>
>
> plugin_LTLIBRARIES = libOPENCVELEMENT.la
>
> # Plugin source files:
> libOPENCVELEMENT_la_SOURCES = opencv_chain.c opencv_chain.h datasetup.h
> libOPENCVELEMENT_la_CFLAGS = \
>         $(GST_PLUGINS_BASE_CFLAGS) \
>         $(GST_CFLAGS) \
>         $(OPENCV_CFLAGS)
>
> libOPENCVELEMENT_la_CXXFLAGS = \
>         $(GST_PLUGINS_BASE_CFLAGS) \
>         $(GST_CFLAGS) \
>         $(OPENCV_CFLAGS)
>
> libOPENCVELEMENT_la_LIBADD = \
>         $(GST_PLUGINS_BASE_LIBS) \
>         $(GST_LIBS) \
>         $(OPENCV_LIBS) \
>         -lopencv_core \
>         -lopencv_highgui
>
> libOPENCVELEMENT_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
> libOPENCVELEMENT_la_LIBTOOLFLAGS = --tag=disable-static
>
>
> Let me know if you need more information. Any help will be appreciated.
> Thank you.
>
>
>
>
> -----
> The greatest trick the devil ever pulled was convincing the World that
> Java was better than C++.
> --
> View this message in context:
> http://gstreamer-devel.966125.n4.nabble.com/gstreamer-plugin-library-not-linking-against-opencv-shared-object-library-undefined-symbol-on-Kubuntu-tp4655749.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20120730/2f59e5f9/attachment.html>


More information about the gstreamer-devel mailing list