当前位置: 首页 > news >正文

建设网站的合同招远网站建设

建设网站的合同,招远网站建设,在线做qq空间的网站吗,沧县做网站价格一、gcc/g是什么 gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C、java、Pascal等语言。gcc支持多种硬件平台 二、gc…

一、gcc/g++是什么

gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C++、java、Pascal等语言。gcc支持多种硬件平台

二、gcc编译程序过程

gcc编译程序主要经过四个过程:预处理、编译、汇编、链接

gcc编译程序过程

预处理

预处理的功能:进行宏替换

预处理功能主要包括宏定义,文件包含,条件编译,去注释等

预处理指令是以#号开头的代码行

实例:

gcc -E gcc_test.c -o gcc_test.i

选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程

选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序

编译

编译的功能:生成汇编

在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查 无误后,gcc 把代码翻译成汇编语言

用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码

实例:

gcc -S gcc_test.i -o gcc_test.s

汇编

汇编的功能:生成机器可识别代码

汇编阶段是把编译阶段生成的“.s”文件转成目标文件

读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了

实例:

gcc -c gcc_test.s -o gcc_test.o

链接

链接的功能:生成可执行文件或库文件

在成功编译之后,就进入链接阶段

实例: 

gcc gcc_test.o -o gcc_test

注意:使用gcc gcc_test.c可以一次性完成上述的所有任务

函数库

我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而 没有定义函数的实现,那么,是在哪里实“printf”函数的呢?

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

使用ldd可以查看当前可执行文件依赖的库

实例: 

 ldd gcc_test

函数库一般分为静态库和动态库两种

静态库:在编译链接时,将库文件代码全部加入可执行文件中,因此生成的文件比较大,但在运行时并不需要库文件。一般为“.a”后缀

动态库:在编译链接时并不把库文件加入可执行文件,而是在程序执行时链接文件加载库,从而节省系统的开销。一般为“.so”后缀

动态库是被所有人共享的,如果动态库崩溃会导致网络上的用户一段时间内都无法链接

使用gcc gcc_test.c -o gcc_test_static -static 命令,可以生成静态库文件

从下图可以看出,使用静态库生成文件,会导致文件的大小增加几十倍不止

如果出现如下错误,是由于使用云服务器不具有静态库

使用如下指令下载即可

sudo yum install -y glibc-static                    c静态库
sudo yum install glibc-static libstdc++-static -y    c++静态库

三、gcc选项

选项名功能
-o产生目标(.i、.s、.o可执行文件等)
-E只运行C预编译器
-S告诉编译器产生汇编程序文件后停止编译,并生成汇编文件后缀为.s 
-c通知gcc取消链接步骤,并在最后生成目标文件
-Wall使gcc对源文件的代码有问题的地方发出警告
-Idir将dir目录加入搜索头文件的目录路径
-Ldir将dir目录加入搜索库的目录路径
-llib链接lib库
-g在目标文件中嵌入调试信息

四、CentOs7下的gcc与g++安装

在bash下直接下载

sudo yum install -y gcc gcc-c++

查看版本号

gcc --version
g++ --version

如果在执行yum install的过程中出现

Another app is currently holding the yum lock; waiting for it to exit…

运行命令

rm -f /var/run/yum.pid	//	强制关掉yum进程

http://www.dtcms.com/a/430670.html

相关文章:

  • 免费域名的网站有哪些可视化建网站
  • 【Linuxvs code】Xshell远程配置到VS Code环境配置指南
  • 微服务网关深度设计:从Spring Cloud Gateway到Envoy,流量治理与安全认证实战指南
  • 全新体验:利用Istio提升微服务安全与监控
  • Nuitka加快打包速度(ccache)全平台配置——持续更新中
  • 大数据毕业设计选题推荐-基于大数据的全球能源消耗量数据分析与可视化系统-大数据-Spark-Hadoop-Bigdata
  • 机械行业做网站猎头公司找的工作怎么样
  • 04_Numpy结构化数组
  • 深圳市龙华区价格优化网站建设
  • 博客标题:解密 IntelliJ IDEA 调试:当你的 List 不仅仅是 List
  • 12.如何使用 JavaScript 构建便签应用程序 | 入门项目
  • 第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)
  • 全栈工程师项目练习记录
  • Vue CLI为何不显示webpack配置
  • 设计模式之策略模式学习
  • 自己做的网站外国人能访问吗广告设计公司有哪些渠道通路
  • 分布式专题——24 Kafka功能扩展
  • 范式革命:RDMA 如何让网络成为 “分布式内存总线”
  • 如何弄公司网站青岛专业网站制作
  • Langchain4j笔记
  • 云计算介绍
  • 什么是Redis哨兵机制?
  • Web本体语言(OWL)
  • 快学快用系列:一文学会java后端WebApi开发
  • 网站加速器免费永久网站开发学习课程
  • SpringBoot 整合Jasypt 实现配置文件加密读取操作详解
  • apache 服务器如何使用
  • CI/CD 流水线与 agentic AI:如何创建自我纠正的 monorepos
  • Coze源码分析-资源库-编辑工作流-后端源码-IDL/API/应用服务层
  • 网站建设与维护课程设计报告书wordpress 多媒体管理系统