qt-interest@trolltech.com
[Top] [All Lists]

Re: ./temp: relocation error: ./temp: undefined symbol: _7QString.shared

Subject: Re: ./temp: relocation error: ./temp: undefined symbol: _7QString.shared_null
From: Stephen Jackson
Date: Thu, 24 Feb 2005 10:56:47 +0000
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/

<Prev in Thread] Current Thread [Next in Thread>