En el siguiente ejemplo, el programa debe imprimir "foo llamada":¿Por qué no __tribuye __ ((constructor)) trabajo en una biblioteca estática?
// foo.c
#include <stdio.h>
__attribute__((constructor)) void foo()
{
printf("foo called\n");
}
// main.c
int main()
{
return 0;
}
Si se compila el programa como este, funciona:
gcc -o test main.c foo.c
Sin embargo, si se compila en foo.c una biblioteca estática, el programa no imprime nada.
gcc -c main.c
gcc -c foo.c
as rcs foo.a foo.o
gcc -o test foo.a main.o
¿Por qué sucede esto?
¿Por qué los votos a favor? Es algo incorrecto? –
No estoy seguro (¿no era yo?) Pero tal vez alguien se ofendió por tu respuesta a tu pregunta tan rápido? – DaveR
Hmm, solo quería agregar una referencia útil al sitio para un problema no obvio. La pregunta frecuente indica que contestar la propia pregunta es algo bueno (está en la primera sección en realidad). –