编译系统和运行时的系统(参照编译原理第三版第11章) 源程序———预处理器———修改后的源程序——编译器———汇编程序————汇编器————可重定位的目标程序————链接器(加入库文件和可重定位的目标文件)————可执行的目标程序 大多数编译系统提供一个驱动程序来调用预处理器、编译器、汇编器、链接器 ...
分类:
其他好文 时间:
2018-09-13 21:38:10
阅读次数:
192
你在做什么?写代码?程序? 代码?编程语言?编译器?链接器?不不不 ……。 我们都看到过一句话 程序 = 算法 + 数据结构。 我们学习了这么多年的知识来学会如何写代码,如何用框架,如何这样那样。其实我告诉你,你所看的,所想的一切其实都是假的,或者说其实他们根本就是设定好的,你只是一个傻子,你相信吗 ...
分类:
其他好文 时间:
2018-09-08 11:42:58
阅读次数:
145
固定内存 主机默认分配的主机内存是可分页的 固定内存是指页锁定的主机内存 当从可分页主机内存传输数据到设备内存时,CUDA驱动程序首先分配临时页锁定的固定内存,将主机内存上的数据先复制到固定内存中,然后从固定内存传输到设备内存。 cudaMallocHost cudaFreeHost 零拷贝内存 零 ...
分类:
其他好文 时间:
2018-09-06 02:40:41
阅读次数:
190
静态库(.a)与动态库(.so)的简明介绍 gcc有很多关于静态库,动态库的选项如 ,` L fPIC shared Wl, soname`,看着很复杂容易混淆,其实静态库和动态库都是应需而生,只要有了一个线索都很容易理解。 普通编译 假设有三个文件(后面均使用这个例子): 我们要想运行这个程序需要 ...
分类:
其他好文 时间:
2018-09-05 14:00:53
阅读次数:
180
一、几个概念 1. 反汇编与反编译 源代码程序-->可执行程序,需要经过编译器-->汇编器-->链接器;用来撤销编译和汇编的过程,称之为反编译和反汇编 反汇编:从机器码到汇编代码 反编译:以汇编代码或机器码到高级语言 2. 常见的指令架构 指令架构:x86、ARM、MIPS x86主要应用于pc机上 ...
分类:
其他好文 时间:
2018-08-27 16:03:30
阅读次数:
1124
工程中的每个C语言源文件被编译后产生目标文件,这些目标文件如何生成最终的可执行程序呢? 链接器: 静态链接: 静态链接就是将库文件或者目标文件直接加入到可执行文件当中。 Linux下静态库的创建和使用: 静态库示例程序:20-1.c slib.c 将slib.c制作成静态库: 先将slib.c编译成 ...
分类:
其他好文 时间:
2018-08-26 11:58:57
阅读次数:
156
控制台应用程序不依赖VS运行环境就可以运行的设置: 1,使用release模式编译 2,项目属性中,“C/C++”,“代码生成”中的运行库改为“多线程(/MT)” 3,项目属性中,“链接器”,“系统”,“所需的最低版本”写上5.01 主要是第2个 参考https://blog.csdn.net/qq ...
分类:
其他好文 时间:
2018-08-21 13:58:26
阅读次数:
202
VLD地址:https://kinddragon.github.io/vld/ 若出现内存泄漏,VS输出窗口会有如下提示: 若要确定造成内存泄漏的代码位置,仅需进入工程属性->链接器->调试,将生成调试信息更改为优化以便于调试, 之后若出现内存泄漏,输出窗口会有如下提示: 双击箭头所指行,便可进入引 ...
分类:
编程语言 时间:
2018-08-16 22:23:30
阅读次数:
182
hello程序的 生命周期是从一个高级C语言程序开始的,这种形式能够被人读懂。 但是为了在系统上运行Hell.c程序,每条C语言都必须被其他程序转化为一系列的低级机器语言指令,然后这些指令 按照一种称为可执行目标程序的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。 在U ...
分类:
其他好文 时间:
2018-08-12 01:24:47
阅读次数:
134
1. 一个类: 头文件用于保存类的声明;定义文件保存类的实现。 2. 分离编译模式: 允许在一个编译单元(.cpp文件)中定义函数、类型、类对象等,然后在另一个编译单元中引用它们。编译器处理完所有的编译单元后,链接器接下来会处理所有指向extern符号的引用(有时为缺省),从而生成单一可执行文件。 ...
分类:
编程语言 时间:
2018-08-06 15:22:27
阅读次数:
132