GStreamer SDK - link error since upgrading to latest version (2012.11Brahmaputra)
Alexey Chernov
4ernov at gmail.com
Tue Feb 5 13:31:18 PST 2013
В письме от 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
More information about the gstreamer-devel
mailing list