[Scribus] Re: Can anybody explain KDE/qt3 situation?

Craig Ringer craig
Wed Oct 19 04:21:14 CEST 2005


Asif Lodhi wrote:
> Hi David,
> 
> On 10/16/05, David Goodenough <david.goodenough at btconnect.com> wrote:
> 
>>On Sunday 16 October 2005 21:02, Craig Bradney wrote:
>>
>>>On Sunday 16 October 2005 21:57, Benjamin Green wrote:
>>>
>>>>>.....................................................................................X
>>
>>Its because of the gcc 4.0 ABI transition, which means that the Qt
>>libraries
>>have changed their names.  That ties in to KDE.
> 
> 
> Could you tell me what is GCC ABI?  Specifically, what does ABI stand
> for?

"Application Binary Interface"

It's essentially a set of rules and conventions a compiler uses when 
generating a binary so that it can be compatibly dynamically linked to 
other binaries. Two executables that use a different ABI might free and 
allocate memory differently, use different function calling conventions, 
and otherwise have incompatible behaviour that prevents them from being 
linked at runtime.

C++ is a large and complex language. The standards committee never 
defined much (any?) of the ABI, so it's largely set by compiler writers. 
They'll change the ABI if some part of the current ABI is limiting what 
they can do, or if they feel it's necessary to achieve better 
compatibility with some other compiler's generated executables. The C 
ABI for most compilers seems to be better defined and more stable.

This is one of the reasons working in C++ on win32 is hell, by the way. 
You load a DLL built in MSVC++6, a second DLL built with Borland, and a 
third built with gcc into an app built with MSVC++7. Just to make life 
more fun, each compiler usually links in its own version of the C 
library, with its own incompatible memory allocation and deallocation 
routines. The set of rules and restrictions you must follow to give this 
a remote chance of working is horrific, and worse it's apallingly 
underdocumented.

Be really, really glad for a shared libc and common compiler on Linux.

--
Craig Ringer




More information about the scribus mailing list