Re: default cflags to compile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 12 Dec 2005, Nuno Lopes stipulated:
Update: I've tried to compile some sample sources, but linking has failed with:

Yeah, linking two libraries using incompatible versions of libstdc++
will be tricky, requiring linking against *both* copies using -Bgroup.
(It's best to experiment using little testbed shared libraries exporting
symbols of the same name, printing out different things from each shared
library, until you grasp how -Bgroup works. It can be counterintuitive.)

But I supposed that compiling it with proper -fabi-version would do the trick..


Note that this will have other (nasty) side-effects; notably exception
catches of exceptions thrown from the Sony API will fail, and types
within the Sony API will appear different to apparently-identical types
outside the Sony API.

We aren't using exceptions, as well as Sony's lib.


To describe this as `unsupported and risky' would be like describing the
ocean as `slightly damp' or the recent oil fire in Hertfordshire as `a
little warm'. Your *safe* options are to get Sony to provide a later
version of this library --- or, better, a version with a C interface, so
that you can be sure that no libstdc++ objects leak out of it --- or to
stick with GCC 3.3.x.

:) I couldn't find much documentation about it either.


(If the Sony library only *has* a C interface, the -Bgroup trick should
work, I think.)

Nop, sony's lib is C++ only. We even have to extend some classes that are provided by them.


And it continues with a couple more errors about that default_alloc
function and std::list. Isn't there a workaround, so that I can link
the objects with the old lib?

You have to link the Sony API with the old lib, and your new code with
the new lib, using -Bgroup to avoid clashes.

So, resuming:
1. compile libstdc++ from gcc 3.3.6 (can I compile the lib alone?)
2. compile gcc & libstdc++ from gcc 4
3. link sony's lib with 1. (how?)
4. link our code with 2. (how?)
5. link both 3. and 4. with the -Bgroup trick together (how?)

BTW, and what if I replace the libstdc++ that comes with gcc 4 with gcc 3.3's lib? Shouldn't it work?


Thanks for your attention,
Nuno

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux