DllMain可以在dll加载到进程、线程时调用,可以做些初始化、清理的工作

但在linux上没有专门的函数,可以使用gcc扩张属性__attribute__((constructor)) and __attribute__((destructor))来实现

类似于全局类变量,其构造函数及析构函数会在加载时自动调用。

上述方法不能实现线程attach、detach,但对一般程序足够了

void __attribute__ ((constructor)) my_load(void);
void __attribute__ ((destructor)) my_unload(void);// Called when the library is loaded and before dlopen() returns
void my_load(void)
{// Add initialization code…
}// Called when the library is unloaded and before dlclose()
// returns
void my_unload(void)
{// Add clean-up code…
}

需要注意的是,该共享库不能使用-nostartfiles 和 -nostdlib 进行编译,否则构造、析构函数不会调用

共享库创建方法:

代码要编译成PIC代码,使用-fPIC,链接时指定为动态库 -shared

参考: http://tdistler.com/2007/10/05/implementing-dllmain-in-a-linux-shared-library

转载于:https://www.cnblogs.com/D3Hunter/p/3175770.html

在linux上实现DllMain + 共享库创建方法相关推荐

  1. 在 Linux 上安装软件的 3 种方法

    在 Linux 上安装软件的 3 种方法 转载自DLonng的Blog https://dlonng.com/posts/linux-install-soft 前言 学习 Linux 必须要学会如何安 ...

  2. Linux下最快速共享目录的方法

    Linux下最快速共享目录的方法 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 搭建FTP,或者是搭建网络文件系统,这 ...

  3. linux将一段时间内文件压缩,在 Linux 上压缩文件的 5 种方法

    在 Linux 上压缩文件的 5 种方法时间:2020-05-07 11:18    浏览次数: 发布者:润天教育    来源:金信润天 0 在 Linux 上有不少用于压缩文件的命令.最新最有效的一 ...

  4. linux 下共享库创建及使用

    1.创建共享库 [xpan@localhost 2.5.3]$ ls libhello.c  libhello.h  usehello.c [xpan@localhost 2.5.3]$ gcc -f ...

  5. Linux动态加载共享库,Linux共享库的动态加载(附测试案例)

    共享库的动态加载是指可以在程序运行的过程中去加载所需的共享库.常用于某些系统或者应用程序的自动升级. 在C语言的源程序动态加载共享库,需要调用一组特殊的函数,它们被声明于一个专门的头文件dlfcn.h ...

  6. linux挂载cifs命令,如何使用 CIFS 在 Linux上挂载 Windows 共享

    在Linux和UNIX操作系统上,可以使用mount命令的cifs选项将Windows共享安装在本地目录树中的特定安装点上. 通用Internet文件系统(CIFS)是一种网络文件共享协议.CIFS是 ...

  7. linux的常用操作——共享库

    1.共享库的命名规则 \qquad共享库,即动态库.库名: lib+库名+.so 2.共享库的制作 2.1生成与位置无关的.o文件 gcc -fpic -c filename.c -I 头文件路径 2 ...

  8. Linux虚拟用户怎么建立,linux下ftp虚拟用户的创建方法

    本文介绍下,在linux系统中,为ftp创建虚拟用户的方法,这里使用vsftpd作为服务器软件,有需要的朋友参考学习下. vsftpd虚拟用户创建示例 Linux的FTP服务支持3种用户: 1.匿名帐 ...

  9. linux 压缩文件小,技术|在 Linux 上压缩文件的 5 种方法

    在 Linux 系统上有很多可以用于压缩文件的工具,但它们的表现并不都是一样的,也不是所有的压缩效果都是一样的.在这篇文章中,我们比较其中的五个工具. 在 Linux 上有不少用于压缩文件的命令.最新 ...

最新文章

  1. 产品经理10大基础技能(5):读透神经网络和机器学习
  2. python人脸识别、人脸关键点检测、性别检测
  3. UIRemoteNotificationType 参考
  4. 全面探索 FreeMarker 模版引擎的扩展性
  5. idea双击无反应,打不开的解决方法,两种情况。
  6. 【行为型模式】《大话设计模式》——读后感 (10)无尽加班何时休?——状态模式...
  7. 逆向工程核心原理学习笔记(十四):栈帧1
  8. 软件测试工程师阶段_软件工程测试阶段
  9. PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
  10. 转:怎样开始学习php代码审计?
  11. 自建服务器打印机,关于Windows 2016 Server创建打印机服务器后对打印机设置权限的问题...
  12. P1181 数列分段Section I
  13. asp.net MVC留言本示例
  14. 赛门铁克发布第21期《互联网安全威胁报告》 揭示当前更为严峻的网络威胁现状...
  15. 在Sun新解决方案中心亲历虚拟化(多图)
  16. LINUX右键打开方式,如何同时存在多种应用?
  17. 筑业单机版建材管理软件
  18. 菜鸟驿站进军万亿社区市场
  19. 写博客必备!手把手教大家搭建免费图床,真香!
  20. Oracle DB audit

热门文章

  1. python socket模块实现udp通信_Python基于socket模块实现UDP通信功能示例
  2. linux nfsnobody用户,处理CentOS 5.5 x64 配置NFS服务过程中nfsnobody用户造成的问题
  3. java 五子棋项目_Java项目如何实现五子棋小游戏
  4. 怎么让存储过程通用化_怎么做分布式存储的面试?
  5. 7-15 计算圆周率 (15 分)
  6. LintCode 375. 克隆二叉树(深复制)
  7. Python熊猫– GroupBy
  8. 在SQL中使用DEFAULT约束
  9. Ubuntu Linux系统环境变量配置文件
  10. 834 树中距离之和