[Discussioni] GNU SDK
jaromil
jaromil a dyne.org
Dom 2 Dic 2001 19:45:31 CET
On Sun, Dec 02, 2001 at 05:48:03PM +0100, Alessandro Rubini wrote:
>
> >>> cc: unrecognized switch -O2 - aborting.
>
> Certo. Perche` il cc di hp non prende -O2.
>
> > Altro esempio mi ? accaduto quando trovando una libreria C++ compilata con
> > compilatore diverso dal GCC: non ci sar? mai verso di usarla con il GCC
> > (questo ? un problema insito nel linguaggio, lo so, visto che non c'?
> > standard per i .LIB/.A)
>
> Non e` questo il motivo.
>
> In gcc.info leggo:
>
> * GNU C++ does not do name mangling in the same way as other C++
> compilers. This means that object files compiled with one compiler
> cannot be used with another.
>
> This effect is intentional, to protect you from more subtle
> problems. Compilers differ as to many internal details of C++
> implementation, including: how class instances are laid out, how
> multiple inheritance is implemented, and how virtual function
> calls are handled. If the name encoding were made the same, your
> programs would link against libraries provided from other
> compilers--but the programs would then crash when run.
> Incompatible libraries are then detected at link time, rather than
> at run time.
>
> Ci sono anche opzioni di cmdline per controllare il "mangling", e dice
> che se le usi anche tutte le librerie devono essere compilate cosi`.
AFAIK libtool (ed in aggiunta ltld in particolare se trattiamo di
cross-platform) puo' aiutare parecchio con i problemi di "mangling"
dei simboli nei binari, addirittura permettendo di esportare in un
file di testo la lista dei simboli.
da libtool.info:
GNU Libtool simplifies the developer's job by encapsulating both
the platform-specific dependencies, and the user interface, in a
single script. GNU Libtool is designed so that the complete
functionality of each host type is available via a generic
interface, but nasty quirks are hidden from the programmer.
--
jaromil //dyne.org - GPG fingerprint and ___id____
6EEE 4FB2 2555 7ACD 8496 AB99 E2A2 93B4 6C62 4800
More information about the discussioni
mailing list