编译链接原理 C++
来源:互联网 发布:电视网络机顶盒什么牌子的好 编辑:程序博客网 时间:2024/06/05 12:39
编译时,产生目标问题.obj文件,将源代码翻译成机器语言。在此过程中,各个
编译单元式没有沟通的,他们是在链接阶段进行沟通。
在编译阶段如果一个文件中用到了另一个文件的变量,由于在编译阶段这两个文
件时没有沟通的,所以会出现找不到的问题。这个问题通过未解决符号表、导出
符号表、地址的重定向表 这三个表之间的协调可以解决。
三个表的定义:
未解决符号表:在本编译单元中使用,没有在本编译单元进行定义的符号(告诉链接器,我还需要什么)
导出符号表:在本编译单元进行定义,并且别的编译单元也可以使用的符号(告诉链接器说,我能提供一些什么)
地址重定向表:记录了本编译单元所有对自身地址的引用(告诉编译器,本单元的哪些需要重定向)
链接器:
关键字:
什么时候使用extern和static:
extern intparam是声明一个变量,并不是定义,这样说明这个变量在别的地方已经定义。用extern定义的变量或者函数,说明在编译阶段会被写入到到未解决符号表,然后到导出符号表里面去找。
static 静态变量仅供本单元使用 由它定义的函数或者变量是不会被写入到导出符号表中的。
include文件的时候使用<>和""的区别,如果使用""则优先到当前目录下查找该文件,如果使用<>,则优先到系统目录中查找文件。速度上会有一些差别。
0 0
- 编译链接原理 C++
- IOS Objective c 同步 异步链接 …
- Linux C 编译错误 “un
- 编译原理 重点题
- C++ static_cast
-  
- Objective C 监听 通知
- fzu 1759 A^B % C
-
- 编译原理笔记10 自上而下分析-预…
- 编译原理笔记11 自上而下分析-递…
- C standard library contents
- C++ keyword: delete note
- C++ Log File Class
- C++ 使用 string 型態
- objective-c 一些作业
- C++ dynamic_cast 出错
- C# Andriod AES 加密算法
- Kinect OpenNI2 win7 x64 vs2010
- 小波变换
- opencv数据结构Mat的好处【转】
- [ios ui][[UIScreen mainScreen] bounds]和 applicationFrame
- cv::Mat结构
- 编译链接原理 C++
- 写保存和读取坐标点的函数遇到的问…
- Kinect的介绍和应用【转】
- 南阳理工OJ_题目170 网络的可靠性
- 图像处理中关于矩的解释
- 关于openGL的说明及GLUT配置和open…
- openGL将三维坐标转换成二维坐标在…
- NSLog的输出格式
- opencv之利用opencv_traincascade训练分类器