Dlaczego __attribute __ ((konstruktor)) nie działa w bibliotece statycznej?

W poniższym przykładzie program powinien wypisać „foo called”:

// foo.c
#include <stdio.h>

__attribute__((constructor)) void foo()
{
    printf("foo called\n");
}

// main.c
int main()
{
    return 0;
}

Jeśli program jest skompilowany w ten sposób, działa:

gcc -o test main.c foo.c

Jeśli jednak foo.c zostanie skompilowany do statycznej biblioteki, program nic nie wydrukuje.

gcc -c main.c
gcc -c foo.c
as rcs foo.a foo.o
gcc -o test foo.a main.o

Dlaczego to się dzieje?

questionAnswers(2)

yourAnswerToTheQuestion