|
|
On Thu, 24 Feb 2005 00:30:32 -0800 (PST), prashant waman
<kiranprashant@xxxxxxxxx> wrote:
> Hi all,
> A very simple project (temp) build on Suse 7.3
> with g++ 2.95.3 and QT 3.3.3 giving the following
> error while running on Redhat Linux 2.4.21-4.EL with
> g++ 3.2.3 and QT 3.3.3,
>
> $ ./temp
> ./temp: relocation error: ./temp: undefined symbol:
> _7QString.shared_null
>
[snip]
>
> As i am compiling and running project on same version
> of QT and compiling on older version of g++ and
> running on newer version of g++, i think it has to run
> but it is not running.
> Where is the problem.
>
I'm afraid that's a false premise. An executable built with an older
version of g++ may _sometimes_ be compatible with a shared library
built with a newer version of g++. However, that is not always the
case. The C++ ABI for g++ changed significantly between 2.95 and 3.x.
It even changed between 3.2 and 3.3 (see
http://www.gnu.org/software/gcc/gcc-3.2/c++-abi.html)
So when you say the "same version of QT", that is true at the source
code level, but that does not make them the "same" or even compatible.
If I were you, I would try to link statically. Alternatively, you
could try shipping your built-with-2.95 libraries with your
application, but then you need to manage your two different versions
of QT 3.3.3 on your runtime machine.
I hope this helps.
--
Stephen Jackson
--
List archive and information: http://lists.trolltech.com/qt-interest/
|
|