在linux上实现DllMain + 共享库创建方法

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里巴巴2014研发project师实习生面试经历

java研发project师的初面是在上周三进行的,终于结果到了晚上才出,而没有通过的则是一结束网上就更新了状态。之后阿里通知这周三,也就是今天进行二面。 凑巧的是今早被舍友吵醒,中午那个困啊,但没时间睡了,…

【数据库】SQL语句

SQL 分为两个部分:数据操作语言(DML)和 数据定义语言(DDL)。增删改查(CRUD)构成了 SQL 的 DML 部分。 SELECT - 从数据库表中获取数据 SELECT 列名 FROM 表名SELECT * FROM 表名 SELECT COUNT(*…

【51单片机快速入门指南】3.3:USART 串口通信

目录快速使用硬知识串行口相关寄存器串行口控制寄存器SCON和PCON串行口数据缓冲寄存器SBUF从机地址控制寄存器SADEN和SADDR与串行口中断相关的寄存器IE和IPH、IP串行口工作模式串行口工作模式0:同步移位寄存器串行口工作模式1:8位UART,波特率…

Spring JTA应用JOTM Atomikos II JOTM

上节建立了一个简单的Java Application以及所需要的数据库和数据表,本节将介绍JOTM在Spring中的配置。 JOTM(Java Open Transaction Manager)是ObjectWeb的一个开源JTA实现,本身也是开源应用程序服务器JOnAS(Java Open Application Server)的一部分&…

从包中构建瓦片服务器

SWITCH2OSM 切换到OPENSTREETMAP 丰富的数据 OpenStreetMap数据丰富而详细,包含与实地人相关的大量数据 - 收集的数据。 功能包括: 道路,铁路,水路等餐厅,商店,车站,自动取款机等。步行和自行车…

树根

树根 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u SubmitStatus Practice HDU 1013Appoint description:System Crawler (2015-04-27)Description The digital root of a positive integer is found by summing the digits of the int…

Scrapy 1.4 文档 01 初窥 Scrapy

初窥 Scrapy Scrapy 是用于抓取网站并提取结构化数据的应用程序框架,其应用非常广泛,如数据挖掘,信息处理或历史存档。 尽管 Scrapy 最初设计用于网络数据采集(web scraping),但它也可用于使用 API&#xf…

【51单片机快速入门指南】4: 软件 I2C

目录硬知识I2C 介绍I2C 物理层I2C 协议层数据有效性规定起始和停止信号应答响应总线的寻址方式数据传输示例程序Soft_I2C.cSoft_I2C.h普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》 I2…

C# TextBox 换行 滚动到最后一行

1、要让一个Windows Form的TextBox显示多行文本就得把它的Multiline属性设置为true。 这个大家都知道,可是当你要在代码中为Text属性设置多行文本的时候可能会遇到点麻烦:)你往往会想到直接付给一个含有换行符"\n"的字符串给Text属…

this的用法this.name=name 这个什么意思

public Employee(string name, string alias){ // Use this to qualify the fields, name and alias: this.name name; this.alias alias;}this的用法this.namename 这个什么意思啊 具体点我有点狠难理解 这是个构造函数,this.name指当前类的属性&#x…

【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

目录硬知识AT24Cxx 介绍引脚排列引脚说明存储结构器件寻址器件操作待机模式存储复位写操作字节写页写应答查询读操作当前地址读随机读顺序读示例程序24C02.c24C02.h测试程序main.c实验现象通讯波形写入部分读取部分普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof…

nyist oj 37 回文字符串 (动态规划经典)

回文字符串 时间限制:3000 ms | 内存限制:65535 KB难度:4描写叙述所谓回文字符串,就是一个字符串。从左到右读和从右到左读是全然一样的。比方"aba"。当然,我们给你的问题不会再简单到推断一个字符串是不是…

iOS Application Security

文章分A,B,C,D 4个部分。 A) iOS Application Security 下面介绍iOS应用安全,如何分析和动态修改app。 1)iOS Application security Part 1 – Setting up a mobile pentesting platform Part1介绍如何在越狱的设备上搭建用来测试iOS安全的环境。 2&…

openlayers基础系列教程(一)

openlayers基础系列教程(一) http://www.openlayers.cn/portal.php?modview&aid19

【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解

目录硬知识SSD1306简介I2C 接口从机地址位(SA0)I2C 总线写数据命令解码器晶振电路和显示时间发生器复位图形显示数据RAM (GDDRAM)命令表基本命令表部分指令详解为 BANK0 设置对比度控制(81h)全部显示开启(A4h/A5h&…

使用GNS3和Cisco IOU搭建路由交换实验-安装篇

如何使用GNS3和Cisco IOU搭建路由交换实验-安装篇GNS3软件的安装建议大家从官网直接下载最新版本的GNS3,官网连接http://www.gns3.com/根据系统类型选择相应的版本,这里我选择的是Windwos系统的最新版本1.3.2下载好安装包后直接运行安装包,在…

符号代码写法大全

摘自:http://www.w3schools.com/tags/ref_symbols.asp Math Symbols Supported by HTML CharacterEntity NumberEntity NameDescription∀∀for all∂∂part∃∃exists∅∅empty∇∇nabla∈∈isin∉&noti…

解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录,

在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示 :“E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资…

1787: [Ahoi2008]Meet 紧急集合

1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1482 Solved: 652[Submit][Status][Discuss]Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT Sou…