
编译链接
文章平均质量分 65
编译链接小知识
持续学习,不断沉淀
C++开发工程师
展开
-
静态库的概念及影响
静态库的生成:由给定的一堆目标文件以及链接选项,链接器可以生成两种库,分别是静态库以及动态库;原创 2023-11-03 16:26:28 · 342 阅读 · 0 评论 -
VSCode配置C++环境编译环境
前言:本文通过整合各博客内容形成一套自己尝试后可行的配置方法。1、下载VScode及MinGW编译器依照VSCode配置C/C++环境博客1章节——5.2章节设置。2、设置编译C++代码的脚本:依照VScode tasks.json和launch.json的设置,设置tasks.json和launch.json两文件。本文重点介绍这两文件,附上各命令的解释:// tasks.json文件的设置:{ "version": "2.0.0", "tasks": [ { "label":原创 2022-04-19 00:23:28 · 1287 阅读 · 0 评论 -
#if 0 #endif 与编译宏的应用
1、#if 0 else#if 1 A // 代码块A #else B // 代码块B#endif 系统只编译if 1部分代码而不编译B部分代码,如果发行代码和调试代码是不同的,可以通过配置if 1/if 0 来选择编译部分,这是一个很常见的做法。学习链接:c语言中“#if 0 / #if 1 … #endif”的作用2、编译宏应用int x = 3;int main(){ #if AA x = 4; #else x = 5; #endif cout<<原创 2020-12-20 20:59:58 · 498 阅读 · 0 评论 -
动态链接与静态链接介绍;修改了动态库代码,什么时候需要重新链接整个发布件?
1、静态链接:静态库在编译链接期间被打包copy到了可执行文件中,也就是说静态库其实是在编译期间(Compile time)链接使用的。2、动态链接:2.1、load-time dynamic linking(加载时动态链接)阶段一:链接时,将动态库信息写入可执行文件;在编译链接生成可执行文件阶段时需要告诉编译器所依赖的动态库信息。阶段二:加载时,可执行文件依据动态库信息进行动态链接。当可执行文件加载(可执行文件复制到内存)完成后,在程序开始运行之前,操作系统就会查找可执行文件依赖的动态库信原创 2020-12-20 16:41:05 · 2587 阅读 · 0 评论 -
编译中符号表存储什么内容,是怎么生成的;链接器做的符号决议是什么(判断未定义符号)
3、符号表的内容:3.1、符号表存储的内容:目标文件中引用的全局变量以及函数;目标文件中定义的全局变量以及函数。3.2、本质上符号表表达的内容:我能提供给其它文件使用的符号;我需要其它文件提供给我使用的符号。编译器在编译过程中每次遇到一个全局变量或者函数名都会在符号表中添加一项,最终编译器会统计出一张符号表。4、符号决议:在符号决议阶段,链接器需要做的工作就是确保所有目标文件中的符号引用都有唯一的定义。链接器会依次扫描每一个给定的目标文件,同时维护了两个集合,一个是已定义符号集合原创 2020-12-20 16:38:36 · 1266 阅读 · 0 评论