第一种方法:
#include <stdio.h>
#include <stdlib.h>
//此函数在main之前执行
void before_main(void) __attribute__((constructor));
//此函数在main之后执行
void after_main(void) __attribute__((destructor));
void before_main(void)
{
printf("start before main\n");
return;
}
void after_main(void)
{
printf("start after main\n");
return;
}
int main(int argc,char *argv[])
{
printf("start in main\n");
return 0;
}
第二种方法:
#include <stdio.h>
#include <stdlib.h>
typedef void (*myctor)(void);
typedef void (*mydtor)(void);
void before_main(void)
{
printf("start before main\n");
return;
}
void after_main(void)
{
printf("start after main\n");
return;
}
//设置.ctors节让 before_main在main之前执行
myctor __attribute__ ((section(".ctors"))) beforemain = before_main;
//设置.dtors节 让after_main在main之后执行
mydtor __attribute__ ((section(".dtors"))) aftermain = after_main;
int main(int argc,char *argv[])
{
printf("start in main\n");
return 0;
}