Почему __attribute __ ((конструктор)) не работает в статической библиотеке?

В следующем примере программа должна вывести «foo named»:

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

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

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

Если программа скомпилирована следующим образом, она работает:

gcc -o test main.c foo.c

Однако, если foo.c скомпилирован в статическую библиотеку, программа ничего не печатает.

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

Почему это происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос