次の例では、プログラムは次のように出力する必要があります"foo called\n"
。
// 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
なぜこれが起こるのですか?