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

使馆网站建设深圳网络营销和推广渠道

使馆网站建设,深圳网络营销和推广渠道,化工企业网站模板 aspx,苏州做门户网站的公司咱们继续进阶,接下来进入到Linux工具中gcc和g的学习在本章博客正式开始介绍之前,我们先要弄清楚程序是怎么翻译的:C语言程序环境一、什么是gcc/g📌gcc是一个c编译器, g是c编译器。我们根据代码的后缀名来判断用哪个编译…

咱们继续进阶,接下来进入到Linux工具中gcc和g++的学习

在本章博客正式开始介绍之前,我们先要弄清楚程序是怎么翻译的:

C语言程序环境

一、什么是gcc/g++

📌gcc是一个c编译器, g++是c++编译器。我们根据代码的后缀名来判断用哪个编译器,若代码后缀名是.c,就用gcc,若代码后缀名是.cpp就用g++编译器

由于gcc和g++编译原理和操作都相同,在本期博客中主要讲述gcc的使用,g++同理

二、gcc的使用

2.1 直接使用gcc

📌gcc可以直接使用,具体操作为:gcc 想要进行编译文件的文件名

直接使用gcc后文件将会被翻译为可执行文件

❗注意:直接使用gcc编译出的可执行文件名默认为a.out

📋举例:

我们首先写好一个.c文件:

用gcc来编译这个文件,发现会生成一个a.out可执行文件:

我们来运行一下这个可执行文件:

2.2 gcc -o

要想gcc编译完的可执行文件的文件名不想为a.out该怎么办呢?

我们可以在gcc后面加上-o选项

📌具体操作为:gcc 想要编译的文件的文件名 -o 生成可执行文件的文件名 gcc -o 生成可执行文件的文件名 想要编译的文件的文件名

📋举个栗子:

2.3 gcc -E

如果我们不想编译完文件,而只是想预处理一下源文件该如何操作呢?

在gcc后面加上-E选项就可以只对源文件进行预处理操作

📌具体操作为:gcc -E 想要预处理的文件的文件名

📋例如:

我们预处理一下这个test.c文件,并将预处理的结果放到test.i文件中(现在我们来对比一下两个文件):

可以看到test.i文件中很好的对代码进行了预处理

2.4 gcc -S

在gcc后面加上-E选项就可以只对文件进行编译操作(转换为二进制代码)

📌具体操作为:gcc -S 想要编译的文件的文件名

想要编译的文件可以是源文件也可以是预处理后的文件

📋例如:

我们现在将预处理后的test.i文件,编译一下放到test.s中

现在我们看一下编译后的代码:

2.5 gcc -c

在gcc后面加上-E选项就可以只对文件进行汇编操作(转换为二进制目标文件)

📌具体操作为:gcc -c 想要汇编的文件的文件名

想要编译的文件可以是源文件、预处理后的文件和编译后的文件

📋例如:

我们现在将编译后的test.s文件,汇编一下放到test.o中

来看一下汇编后文件:

三、谈谈链接

从上面我们很好的看到源文件所被预处理、编译和汇编的过程,但是链接的过程呢?

我们在直接使用gcc时所生成的可执行文件已经被链接过了,那它链接了什么内容呢?

在Linux环境下可以使用ldd指令来查看文件所链接的内容:

📌具体操作为:ldd 想要查看文件所链接内容的文件名

📋例如:

我们可以看到该文件链接了三个内容

接下来有一个问题:我们为什么能够在Linux环境下进行c/c++代码的编写和编译呢?

💡这是因为Linux系统默认已经携带了语言级别的头文件和语言相对应的库

Linux环境下的库分为两种,静态库和动态库(本质上都是文件)

静态库的命名格式为:

libXXXXXXX.a.版本号

动态库的命名格式为:

libXXXXXXX.so.版本号

以及我们在vs2022环境下可以编写和编译代码也是因为,vs环境帮助我们下载安装了头文件和库文件

💡那静态库和动态库有什么区别呢?

1.静态库专门让编译器,对用户的程序进行静态链接的;动态库专门让编译器,对用户的程序进行动态链接的
2.静态库和静态链接:链接的时候,如果是静态链接,找到静态库,拷贝静态库中的我所需要的代码到我自己的可执行程序中相关的位置
3.动态库和动态链接:链接的时候,如果是动态链接,找到动态库,拷贝动态库中的我所需要的代码的地址到我自己的可执行程序中相关的位置
4.静态链接成功:程序不依赖任何库,自己就可以独立运行
5.动态链接成功:程序还是依赖动态库,一旦动态库缺失,程序便无法运行!
6.静态库:因为自身拷贝的问题,比较浪费空间
7.动态库:因为可以做到被大家共享方法,所以真正的实现永远都是在库中,程序内部只有地址,比较节省空间
8.静态库vs动态库Linux默认使用的是动态链接和动态库!

既然Linux环境下默认是动态链接,那么我们如果想以静态链接的方式编译文件该该怎么办呢?

💡我们可以在gcc指令后面加上-static选项

例如:

我们先对gcc默认编译的test.exe文件进行ldd和file查看一下链接和类型:

可以看到该文件是动态链接的

现在我们来使用-static选项来静态链接编译一个可执行文件:

可以看到该静态链接的文件比动态链接文件大了100倍!

❗注意:如果大家在使用-static选项有这样的报错:

这是因为自己LInux环境下没有安装静态库,使用下面两条指令安装一下即可:yum install -y glibc-static(C语言静态库)yum install -y glibc-static libstdc++-static(C++静态库)


Linux下gcc和g++工具到这里就给大家讲述完了,恭喜各位通关成功~

我们下一期见~

http://www.khdw.cn/news/65216.html

相关文章:

  • 专业网站建设多少钱手机建站教程
  • 查询网138网站域名成品网站1688入口的功能介绍
  • 青岛网站设计网站郑州seo竞价
  • java做网站不如php吗seo属于运营还是技术
  • 做公司网站页面自己如何免费做网站
  • 怎么切图做网站网站注册搜索引擎的目的是
  • 用什么可以做网站图片seo优化是什么意思
  • web网站开发详细代码免费找客户软件
  • 做网站哪些网络公司好指数函数和对数函数
  • 西安专业网站建设公司搜一搜
  • 如何建立简单网站百度竞价托管代运营
  • 无锡企业建站模板网站推广技巧有哪些
  • 网站制作技术方案seo关键词优化排名推广
  • 便宜自适应网站建设今天时政新闻热点是什么
  • 头条站长平台潍坊seo按天收费
  • 在手机上如何制作网站百度指数功能有哪些
  • 合肥定制网站建设公司网站为什么要seo
  • html网站建设流程百度一下首页网页百度
  • 网站开发建设步骤聊城seo培训
  • 太仓做网站的 太仓网站seo快速优化技巧
  • 成都建设银行社会招聘网站百度客服在哪里找
  • 苏州网站设计都选苏州聚尚网络最新疫情最新情况
  • 网站开发网页上传和网页发布信息流优化师工作总结
  • 建网站算法网络整合营销方案
  • 饰品做商城网站模式英文seo实战派
  • 做网站优化的公司的宣传海报网络优化seo是什么工作
  • 做私服网站总是被攻击2345浏览器影视大全
  • 企业网站设计哪个好外贸网站seo优化
  • 三星官方网站贵阳百度快照优化排名
  • 做同城网站赚钱常用的五种网络营销工具