GStreamer SDK - link error since upgrading to latest version (2012.11Brahmaputra)

philippe renon philippe_renon at yahoo.fr
Tue Feb 5 13:52:02 PST 2013





----- Mail original -----
> De : Alexey Chernov <4ernov at gmail.com>
> À : Discussion of the development of and with GStreamer <gstreamer-devel at lists.freedesktop.org>
> Cc : philippe renon <philippe_renon at yahoo.fr>
> Envoyé le : Mardi 5 février 2013 22h31
> Objet : Re: GStreamer SDK - link error since upgrading to latest version (2012.11Brahmaputra)
> 
> В письме от 05 фев 2013 18:46:15 пользователь Andoni Morales написал:
>>  2013/2/5 Andoni Morales <ylatuya at gmail.com>:
>>  > 2013/2/4 philippe renon <philippe_renon at yahoo.fr>:
>>  >> Hi Kyrylo,
>>  >> 
>>  >> Thanks for helping.
>>  >> 
>>  >> I don't yet have the answer to which C++ runtimes are used.
>>  >> 
>>  >> But I can provide the details about the project's g++ :
>>  >> 
>>  >> $ which g++
>>  >> /d/OPENPI~2/QtSDK/mingw/bin/g++
>>  >> 
>>  >> $ g++ -v
>>  >> Using built-in specs.
>>  >> Target: mingw32
>>  >> Configured with: ../gcc-4.4.0/configure
>>  >> --enable-languages=c,ada,c++,fortran,java,objc,obj-c++
>>  >> --disable-sjlj-exceptions
>>  >> 
>>  >>  --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2
>>  >> 
>>  >> --disable-win32-registry --enable-libstdcxx-debug --enab
>>  >> le-version-specific-runtime-libs --prefix=/mingw
>>  >> --with-gmp=/mingw/src/gmp/root --with-mpfr=/mingw/src/mpfr/root 
> --build
>>  >> =mingw32
>>  >> Thread model: win32
>>  >> gcc version 4.4.0 (GCC)
>>  >> 
>>  >> At this point, I would like to know if the only solution is too 
> make sure
>>  >> both projects are using the same toolchain.
>>  >> I hope not as this is a bit out of my league.
>>  >> Would it possible to "tweak" the project's toolchain 
> or build process to
>>  >> become compatible with the SDK?
>>  >> If not, are there other alternatives? Is it in the SDK roadmap to 
> support
>>  >> alternate toolchains ?
>> 
>>  I am not familiar with QT's SDK, but from the download area notes I
>>  see that they provide a toolchain that's built using the sljl
>>  exception handling model:
>>  "The MinGW binary package includes a 32 bit MinGW-builds (gcc 4.7.2,
>>  sjlj exception handing, posix threading) toolchain."
>> 
>>  So you should use this toolchain  instead of MinGW default's one.
> 
>>  This is an issue with the different exception handling used in GCC.
>>  Our toolchain uses the old sljj exceptions while the one you are using
>>  uses dwarf. But this shouldn't be an issue unless you are mixing c++
>>  libraries.  Are you using QtGStreamer? How are you building it?
>>  Can you please describe the steps to reproduce the issue such as which
>>  project should we checkout and which branch, configure options, etc...
> 
> Yes, we have discussed this issue some time ago.
> 
> Andoni is right, there's a problem with exception handling. Another problem 
> is 
> that at least as of 2012.11 version, some GStreamer dependency requires _any_ 
> GStreamer-based program (I experimented on 'hello world' example) be 
> linked 
> with libstdc++6, which in turn leads to conflict in exception handling method. 
> Even if you workaround this link error, you'll have a good chance to get an 
> exception right after the program start in some strange place like strcpy() 
> call.
> 
> What's more, as I've read in several places during my experiments, 
> there're 
> some binary incompartibility in gcc-4.7.2 and previous versions, so I actually 
> haven't managed to get it work 2012.11 SDK 32-bit and Qt4 build with MinGW 
> 4.7.2.
> 
> What solved the problem for me is using MinGW package downloaded by cerbero 
> during GStreamer SDK build process. I built Qt-4.8.4 with it and then built my 
> application against GStreamer SDK 2012.11 and this custom Qt build. Everything 
> worked fine after that.
> 
> Also, David Hoyt suggested me to use OSSBuild package which also seems to help 
> but I still haven't tried it but it can fix the problem, too, I think.
> 
> Alexey Chernov
>

Thanks to a pointer given by Andoni, there is a new Qt 5.0.1 version that comes with a hopefully compatible MinGW tool chain (gcc 4.7.2, sjlj exception handing, posix threading).
See here : http://qt-project.org/downloads.

So I'll stick with SDK 2012.09 for ongoing development and will see if the Open Pilot dev team wants to accelerate the move to Qt 5.

I used OSSBuild initialy but switched to GStreamer.com because it supports all the platforms supported by Open Pilot (windows, macos, linux  ... and android).
And OSSBuild seems a bit inactive (latest release is almost a year old).

Regards,
Philippe.


More information about the gstreamer-devel mailing list