库应该使用gcc attribute ((constructor))和__attribute
__((destructor))函数属性导出初始化和清理例程。有关这些信息,请参见gcc信息页面。构造函数例程在dlopen返回之前执行(如果在加载时加载了库,则在main()启动之前)。析构函数例程在dlclose返回之前执行(如果在加载时加载了库,则在exit()或main()完成之后)执行。这些函数的C原型是:
void __attribute__ ((constructor)) my_init(void); void __attribute__ ((destructor)) my_fini(void);
取自http://tldp.org/HOWTO/Program-Library-
HOWTO/index.html
就是说,您只需将__attribute__((constructor))附加到加载共享库时要调用的函数即可。上面的文档还指出,较旧的_ini和_fini函数被认为已过时。



