请稍侯

在main方法之前调用函数

01 December 2020

在main方法之前调用函数

方法一:根据glibc的全局构造函数是放在.ctors段中,的怪可以在.ctors段中添加一些函数指针,就可以让这些函数在全局构造的时候调用了,如下:

#include <stdio.h>

void my_init(void){
    printf("Hello ");
}

typedef void(*ctor_t)(void);
//向.ctors段中添加一个函数指针
ctor_t __attribute__((section (".ctors"))) my_init_p = &my_init;

int main(){
    printf("World!\n");
    return 0;
}

方法二:利用gcc的关键字 __attribute__ ((constructor)),如下:

#include <stdio.h>

void my_init(void) __attribute__ ((constructor));
void my_init(void){
    printf("Hello ");
}

int main(){
    printf("World!\n");
    return 0;
}