Comment faire de la faiblesse de la relation entre travail avec GCC?

Il y a 3 façons de raconter à GCC de maillon faible d'un symbole:

  • __attribute__((weak_import))
  • __attribute__((weak))
  • #pragma weak symbol_name

Aucune ne fonctionne pour moi:

#pragma weak asdf
extern void asdf(void) __attribute__((weak_import, weak));
...
{
    if(asdf != NULL) asdf();
}

J'ai toujours une erreur de lien comme ceci:

Les symboles non définis: 
"_asdf", référencé à partir de: 
_asdf$non_lazy_ptr dans ccFA05kN.o 
ld: symbole(s) non trouvé 
collect2: ld a retourné 1 code de sortie

Je suis en utilisant GCC 4.0.1 sur OS X 10.5.5. Ce que je fais mal?

  • int __attribute__((weak)) main() { ... } fonctionne très bien pour moi avec gcc/Mac OS X, mais ne parvient pas à compiler avec gcc/MinGW. 🙁