Building a stand-alone, static, debug'-g' version of GStreamer

Luis de Bethencourt luis at debethencourt.com
Wed May 23 01:06:07 PDT 2012


Hi,

In your folder just git clone all the modules and use the gst-uninstalled
script in gstreamer (core module)/scripts

http://gstreamer.freedesktop.org/wiki/UninstalledSetup

Or you can use jhbuild

http://wiki.pitivi.org/wiki/GStreamer_using_jhbuild

I prefer gst-uninstalled though, but it is a matter of personal taste.

Luis

On 23 May 2012 01:58, FritzKatz <frtzkatz at yahoo.com> wrote:
>  I'd like to build a stand-alone, static, debug'-g' version of GStreamer so
> I can step through simulations, bugs, and new plugin development with a
> source-debugger. I'd like to install the executables, libraries, includes,
> and debug versions of plugins in a directory ~/BIN under my user account.
> I'd also like to leave the system GStreamer working so I can switch back and
> forth between development and a known, working system.
>
>  Is there a better way of doing this? Please let me know. This is what I've
> been able to figure out on my own:
> __________________________________________
>
>  I've successfully built gstreamer-0.10 ( from
> http://gstreamer.freedesktop.org/src/ ). And I've installed my local copy to
> compile and build against by doing:
>
> $ cd ~/DEV/gstreamer-0.10/
> $ ./configure --enable-debug --enable-gst-debug --enable-profiling
> --enable-parse --enable-option-parsing --enable-static --disable-shared
> --prefix=/home/user/BIN
> $ make
> $ make install
>
> So now I've got my own debug version of the Gstreamer launcher, inspector,
> includes, and libs. Everything appears to be happy, so far.
>
> $ cd ~/BIN
> $ tree -d
>        .
>        |-- bin
>        |-- include
>        |   `-- gstreamer-0.10
>        |       `-- gst
>        |           |-- base
>        |           |-- check
>        |           |-- controller
>        |           |-- dataprotocol
>        |           `-- net
>        |-- lib
>        |   |-- gstreamer-0.10
>        |   `-- pkgconfig
>        |-- libexec
>        |   `-- gstreamer-0.10
>        `-- share
>            |-- aclocal
>        [[...]]
> __________________________________________
>
> Next I downloaded the gst-plugins-base-0.10, built, and statically linked
> against my development version:
>
> $ cd ~/DEV/gst-plugins-base-0.10/
> $ export GST_CFLAGS="-I/home/user/BIN/include/gstreamer-0.10 \
>          -I/home/user/BIN/include/gstreamer-0.10/gst
> -I/usr/include/glib-2.0 \
>          -I/usr/lib/glib-2.0/include -I/usr/include/libxml2"
>
> $ export GST_LIBS="-pthread -static -L/home/user/BIN/lib -lgstreamer-0.10 \
>          -lxml2 -lgthread-2.0 -lrt -lgobject-2.0 -lglib-2.0"
>
> $ ./configure --enable-debug --enable-static --enable-profiling
> --disable-shared --prefix=/home/user/BIN
> $ make
> $ make install
> __________________________________________
>
> I can verify my debug versions of the gst-plugins-base were correctly
> installed and visible:
>
> $ cd ~/BIN/bin/
> $ ./gst-inspect
>        audioresample:  audioresample: Audio resampler
>        playback:  subtitleoverlay: Subtitle Overlay
>         [[...]]
>        audiotestsrc:  audiotestsrc: Audio test source
>        alsa:  alsasink: Audio sink (ALSA)
>        alsa:  alsasrc: Audio source (ALSA)
>        alsa:  alsamixer: Alsa mixer
>        coreelements:  valve: Valve element
>          [[...]]
>        typefindfunctions: audio/x-musepack: mpc, mpp, mp+
>        typefindfunctions: video/x-ms-asf: asf, wm, wma, wmv
>        staticelements:  bin: Generic bin
>        staticelements:  pipeline: Pipeline object
>        Total count: 26 plugins, 178 features
>
> However, when I try inspect one of the plugins, or use ./gst-launch, I get
> "GLib-GObject-CRITICAL" errors:
>
> $ ./gst-inspect alsasink
>        (gst-inspect-0.10:30950): GLib-GObject-WARNING **: cannot register existing
> type `GstObject'
>        (gst-inspect-0.10:30950): GLib-CRITICAL **: g_once_init_leave: assertion
> `initialization_value != 0' failed
>        (gst-inspect-0.10:30950): GLib-GObject-CRITICAL **: g_type_register_static:
> assertion `parent_type > 0' failed
>        (gst-inspect-0.10:30950): GLib-CRITICAL **: g_once_init_leave: assertion
> `initialization_value != 0' failed
>        (gst-inspect-0.10:30950): GLib-GObject-CRITICAL **: g_type_register_static:
> assertion `parent_type > 0' failed
> __________________________________________
>
> Is there something obvious I've done wrong?  Where to go next?
>
> Since I've got debug turned on, I can get lot's of information. Spewage from
> turning on GST_DEBUG indicates that it's using the correct library in
> ~/BIN/lib.  It even says it "looks good", just before it hangs
>
> $ export GST_DEBUG=5
> $ ./gst-inspect alsasink
>
> 0:00:00.000448594 31059  0xa0bf070 INFO                GST_INIT
> gst.c:613:init_pre: Initializing GStreamer Core Library version 0.10.36
> 0:00:00.000485536 31059  0xa0bf070 INFO                GST_INIT
> gst.c:614:init_pre: Using library installed in /home/user/BIN/lib
> 0:00:00.000495006 31059  0xa0bf070 INFO                GST_INIT
> gst.c:624:init_pre: Linux ubuntu 2.6.32-38-generic #83-Ubuntu SMP Wed Jan 4
> 11:13:04 UTC 2012 i686
>  [[...]]
> 0:00:00.904396010 31156  0x8232070 DEBUG     GST_PLUGIN_LOADING
> gstplugin.c:1293:gst_plugin_load_by_name: looking up plugin alsa in default
> registry
> 0:00:00.904410607 31156  0x8232070 DEBUG     GST_PLUGIN_LOADING
> gstplugin.c:1296:gst_plugin_load_by_name: loading plugin alsa from file
> /home/user/BIN/lib/gstreamer-0.10/libgstalsa.so
> 0:00:00.904419281 31156  0x8232070 DEBUG     GST_PLUGIN_LOADING
> gstplugin.c:737:gst_plugin_load_file: attempt to load plugin
> "/home/user/BIN/lib/gstreamer-0.10/libgstalsa.so"
> 0:00:00.905904303 31156  0x8232070 LOG       GST_PLUGIN_LOADING
> gstplugin.c:834:gst_plugin_load_file: Plugin 0x824ba20 for file
> "/home/user/BIN/lib/gstreamer-0.10/libgstalsa.so" prepared, calling entry
> function...
> 0:00:00.905922400 31156  0x8232070 LOG       GST_PLUGIN_LOADING
> gstplugin.c:841:gst_plugin_load_file: Plugin 0x824ba20 for file
> "/home/user/BIN/lib/gstreamer-0.10/libgstalsa.so" prepared, registering...
> 0:00:00.905933556 31156  0x8232070 LOG       GST_PLUGIN_LOADING
> gstplugin.c:540:gst_plugin_register_func: plugin
> "/home/user/BIN/lib/gstreamer-0.10/libgstalsa.so" looks good
>
> (gst-inspect-0.10:866): GLib-GObject-WARNING **: cannot register existing
> type `GstObject'
>
> (gst-inspect-0.10:866): GLib-CRITICAL **: g_once_init_leave: assertion
> `initialization_value != 0' failed
>
> (gst-inspect-0.10:866): GLib-GObject-CRITICAL **: g_type_register_static:
> assertion `parent_type > 0' failed
> __________________________________________
>
> And, here's a backtrace from gdb where the program is hanging:
> __________________________________________
>
> $ ps -aux | grep inspect
>  fritzkatz   32146  0.0  0.1   9552  3036 pts/0    S    19:12   0:00
> /home/user/BIN/bin/gst-inspect-0.10 alsasink
>
> $ gdb /home/user/BIN/bin/gst-inspect-0.10 32146
>
>  [[...]]
>
> warning: Unable to find dynamic linker breakpoint function.
> GDB will be unable to debug shared library initializers
> and track explicitly loaded dynamic code.
> 0x0012d422 in __kernel_vsyscall ()
>
> (gdb) bt
> #0  0x0012d422 in __kernel_vsyscall ()
> #1  0x003aa015 in ?? ()
> #2  0x0066b738 in ?? ()
> #3  0x0067e98b in ?? ()
> #4  0x005948c2 in ?? ()
> #5  0x00596482 in ?? ()
> #6  0x080929a6 in gst_plugin_register_func (plugin=0x80f70bc, desc=0x0,
> user_data=<value optimized out>) at gstplugin.c:557
> #7  0x080943c3 in gst_plugin_load_file (filename=0x8125c40
> "/home/user/BIN/lib/gstreamer-0.10/libgstalsa.so",
>    error=0xbffff04c) at gstplugin.c:843
> #8  0x08094fb9 in gst_plugin_load_by_name (name=0x8125c10 "alsa") at
> gstplugin.c:1297
> #9  0x08095a68 in gst_plugin_feature_load (feature=0x81262d0) at
> gstpluginfeature.c:111
> #10 0x08051f36 in print_element_info (factory=0xfffffe00, print_names=0) at
> gst-inspect.c:1332
> #11 0x0805315f in main (argc=2, argv=0xbffff324) at gst-inspect.c:1619
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Building-a-stand-alone-static-debug-g-version-of-GStreamer-tp4650852.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


More information about the gstreamer-devel mailing list