Dans l'exemple suivant, le programme devrait imprimer « foo appelé »:Pourquoi __attribute __ ((constructeur)) ne fonctionne-t-il pas dans une bibliothèque statique?
// foo.c
#include <stdio.h>
__attribute__((constructor)) void foo()
{
printf("foo called\n");
}
// main.c
int main()
{
return 0;
}
Si le programme est compilé comme celui-ci, cela fonctionne:
gcc -o test main.c foo.c
Cependant, si foo.c est compilé dans une bibliothèque statique, le programme n'imprime rien.
gcc -c main.c
gcc -c foo.c
as rcs foo.a foo.o
gcc -o test foo.a main.o
Pourquoi cela se produit-il?
Pourquoi les downvotes? Quelque chose d'incorrect? –
Je ne suis pas sûr (n'était pas moi!) Mais peut-être que quelqu'un vous a dérogé en répondant à votre propre question si rapidement? – DaveR
Hmm, je voulais juste ajouter une référence utile au site pour un problème non évident. La FAQ indique que répondre à sa propre question est une bonne chose (c'est dans la première section en fait). –