静态IP 联合主键 pagination 3d rss 网络营销视频 click事件 bootstrap图表 matlab跳出for循环 matlab区分大小写吗 安装python教程 python内置库 python课程 python环境配置 python的extend java案例 java基础代码 java自学编程入门教程 java的集合 java代码 java比较字符串 linux入门 凤凰刷机 谷歌地球用不了 kontakt js刷新页面 苹果放大镜 c4d挤压怎么用 极限防守图 拳皇2005出招表 lol改皮肤软件 ps怎么p人脸 趣学python编程 太阳代理ip cad特性不显示 xfce4 ie内核修复 网页制作教程 nwiz quadro显卡
当前位置: 首页 > 学习教程  > 编程语言

Linux常用工具——gcc

2021/1/28 22:41:20 文章标签:

文章目录1.编译过程1.1直接编译1.2预处理1.3编译1.4链接2.函数库2.1什么是函数库2.2动静态库的差别1.编译过程 我们可以直接用gcc对文件完成编译,也可以进行分步编译,分步编译的过程为预处理,编译,汇编,链接&#xff…

文章目录

  • 1.编译过程
    • 1.1直接编译
    • 1.2预处理
    • 1.3编译
    • 1.4链接
  • 2.函数库
    • 2.1什么是函数库
    • 2.2动静态库的差别

1.编译过程

我们可以直接用gcc对文件完成编译,也可以进行分步编译,分步编译的过程为预处理,编译,汇编,链接;

1.1直接编译

在这里插入图片描述

1.2预处理

预处理的功能:宏定义替换,文件包含,条件编译,去注释等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gcc是如何找到对应的库的呢?
在安装gcc编译器的时候,同时会进行一些库的安装,编译器自身有能力去查找所需要的库;

1.3编译

gcc检查代码的规范性,是否有语法错误等,以及确定代码的实际要做的工作,检查无误后,gcc将代码翻译成汇编语言,生成.o文件,相当于windows中的obj文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4链接

将汇编之后生成的.o文件进行链接,生成可执行程序

为什么需要链接?
因为我们的程序之中调用了函数接口,因此需要链接函数库;
在这里插入图片描述

2.函数库

2.1什么是函数库

由上述可知,我们在预处理阶段只是将头文件“stdio.h”进行了包含,并且头文件中只有printf函数的声明,并没有实现,那么是在哪里实现函数的呢?

系统将这些函数的实现都放到了名为libc.so.6的库文件中去了,在没有特别指定的时候,gcc会到系统默认的搜索路径/usr/lib下进行查找,也就是链接到libc.so.6库函数中去,这样就实现了函数,这也是链接的作用;

在这里插入图片描述

2.2动静态库的差别

在这里插入图片描述


本文链接: http://www.dtmao.cc/news_show_650057.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?