链接、装载与库
文章平均质量分 88
chuanwang66
软件工程专业
展开
-
ELF文件【转:给我一个全局的视野】
转自http://learn.akae.cn/media/ch18s05.html5. ELF文件 请点评ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型:可重定位的目标文件(Relocatable,或者Object File)可执行文件(Executable)共享库(Shared Object,或者S...原创 2013-08-10 14:07:53 · 149 阅读 · 0 评论 -
函数签名(function signature)与符号修饰(name decoration)【转】
转载自:http://blog.csdn.net/weiwangchao_/article/details/7165467 先来总结一下Sam看这篇文章的要点: 1. 函数名称 不能完全标识 一个函数;因此我们用“函数签名(function signature)”来唯一标识一个函数2. “函数签名”经过不同“编译器/链接器”的“名称修饰(name decoration)”得...原创 2013-08-10 14:05:08 · 1065 阅读 · 1 评论 -
观察运行时堆栈【原创】
原创,装载请标明引用地址,欢迎拍砖 1. 背景: 嘉龙在bprofile函数级别性能测试中抱怨:没有针对每个函数消耗cpu时间的统计。于是据此我做了一点研究: (1) bprofile实际上是取N个时间点进行抽样统计,如果第i个时间点运行时栈中有本函数,则认为函数被调用一次。因此,bprofile报告中虽然说是“函数调用次数”,但实际上是“函...原创 2013-08-10 13:13:12 · 337 阅读 · 0 评论 -
Linux下静态库和动态库(共享库)的制作与使用
下面是总结的一个经典帖子的内容,不是我原创,在此声明:Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库。linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。静态函数库: 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库...原创 2013-07-10 17:29:27 · 123 阅读 · 0 评论 -
第6章 可执行文件的装载与执行
可执行文件的装载与执行一、进程虚拟地址空间 区分“程序虚拟地址空间的寻址范围”、“程序可以使用的虚拟地址空间”和“程序可以使用的内存空间”: 1. “程序虚拟地址空间的寻址范围”、“程序可以使用的虚拟地址空间”: 32位CPU只能使用32位指针。最大寻址范围是0~4GB;在Linux下最多可以使用3GB空间(1GB留给OS),在...原创 2013-01-21 18:46:55 · 156 阅读 · 0 评论 -
第4章 静态链接
静态链接 一、空间与地址分配 这里的“空间和地址”有两个含义:第一,在输出的可执行文件ab.o中的空间;第二,是在装载后的虚拟地址中的虚拟地址空间。 现在的链接器的策略基本上都是:将a.o和b.o中相似段合并(如.text和.text段合并),然后再分配空间(ab文件中分配空间基本上是两个.text段加起来的大小;类似地,在虚拟地址空间中也去指定...原创 2013-01-20 14:40:31 · 128 阅读 · 0 评论 -
第3章 目标文件(ELF格式)
源文件SimpleSection.c为:int printf(const char* format, ...);int global_init_var=84;int global_uninit_var;void func1(int i){ printf("%d\n", i);}int main(void){ static int static_var...原创 2013-01-20 10:58:05 · 115 阅读 · 0 评论 -
第7章 PIC、GOT和PLT和延迟绑定(动态链接补充)
其实读完《程序员的自我修养》这本书的“动态链接”一章后,仍然云里雾里,幸运的是在网上找到国外大牛发表的这篇博客。本人愚笨,仔仔细细读了一天,做了PPT图解了本文,并且以问答的方式阐述了文中细节。彻底理解了PIC、GOT和PLT和延迟绑定,向着小牛的高峰又奋进了一步 一、国外大牛原文 PLT and GOT - the key to code sharing a...原创 2013-03-30 17:14:16 · 869 阅读 · 0 评论 -
第8章 Linux共享库的组织
从文件结构上讲,共享库(shared library)和共享文件没有什么区别,Linux下的共享库就是普通的ELF共享对象。 一、共享库的版本 1. 共享库版本命名:libname.so.x.y.z lib 固定前缀; ...原创 2013-03-03 11:49:26 · 83 阅读 · 0 评论 -
How The Kernel Manages Your Memory【转】
本文转自: http://duartes.org/gustavo/blog/post/how-the-kernel-manages-your-memory另外参见: http://www.kerneltravel.net/journal/v/mem.htm (Linux内存管理) Sam: 详细了解VMA After examining the virtual add...原创 2013-10-26 08:19:21 · 126 阅读 · 0 评论