| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> Linux编译过程 -> 正文阅读 |
|
[开发工具]Linux编译过程 |
预编译过程一般是读取 .c 或 .cpp 源程序,对其中的伪指令(以# 开头的指令)和特殊符号进行处理。 伪指令有 宏定义,条件编译, 头文件包含指令。 特殊符号如 LINE 标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。 编译过程编译程序要做的是,通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。不同编译系统会有优化处理。 汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。 链接过程由汇编程序生成的目标文件并不能立即就被执行,某个源文件中的函数可能引用了另一个源文件中定义的某个符号(如变量或者函数调用等),也可能调用了某个库文件中的函数。 链接程序的主要工作就是将有关的目标文件彼此相连接。即:将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。 静态链接方式(lib文件):在程序执行之前完成所有的组装工作,生成一个可执行的目标文件(exe文件)。 静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序c存在时,内存中就会存在多个拷贝,这样会浪费内存资源。
你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终的EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 4:52:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |