【Linux进阶之路】gcc/g++、Makefile、git

这篇具有很好参考价值的文章主要介绍了【Linux进阶之路】gcc/g++、Makefile、git。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在正式开始之前我们先补充一个知识点——普通用户提权的操作。

sudo 【指令】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 那如何将tmp1添加到信任白名单——sudoers文件 中呢?

肯定不能自己加,得超级管理员root加——第一步:切到超级用户

找到sudoers文件——/etc/sudoers

第二步:编辑此文件

vim /etc/sudoers

第三步: 在大概一百行左右会出现这样的标志。

补充小知识:

如何显示行号呢?
:set nu

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

第四步:复制粘贴修改用户名即可

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
第五步:强制保存并退出
补充:因为这个文件不具备写权限,所以得强制保存并退出。

:wq!

切换到tmp1账号再执行操作,就会看到在普通用户sudo执行whoami就会显示root的情况。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

一、编译器——gcc/g++

安装

安装gcc指令

yum install -y gcc

安装g++指令

yum install -y gcc-c++ libstdc++-devel

基本使用

 1.我们先用vim写一段这样的代码。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

 2.直接编译生成可执行程序。

	gcc test.c

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
这里的a.out是默认生成的可执行程序,那有没有什么指令能改最终的可执行程序的名字呢?——重定向

gcc test.c -o test

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
注意:-o选项后面一定要跟目标文件,因为重定向的意思即为将文件经过处理产生的新内容重定向到另一个目标文件。

有了这个指令,之后的预处理,编译,汇编,链接就方便讲了。

我们之前的文章讲过这些内容,就不再细讲了,主要结合指令进行使用,有兴趣自行点击查看下面的文章。

【进阶C语言】程序环境与预处理
【深度解刨C语言】预处理(全)

拓展编译的知识:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
准备工作完成,我们开始使用指令吧!

① 将文件执行到预处理结束就停止。

指令

gcc - E test.c -o test.i

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 接着我们看一下生成的文件里面有啥。
    【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

②将文件处理到编译结束就停止。

指令

gcc -S test.c -o test.s

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 我们看一下生成的文件里面放的是啥?
    【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

③将文件处理到汇编就停止。
指令

gcc -c test.c -o test.i

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 我们用vim查看一下此文件。
    【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

结果是乱码,因为vim是文本编辑器,而此文件是二进制的文件,读不出来了。

我们可以用二进制方式查看。

od test.o

结果:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

虽然是二进制形式,但我还是看不懂,害~


到这里我们预处理阶段就完成了,剩下的一个阶段是链接。

 我们首先要想清楚为什么要链接,也就是链接干了啥事?链接将函数的声明与函数的定义联系起来,比如库函数,头文件里面有函数的声明,那定义在哪呢?不就在链接时添上了么,库函数定义的地方我们称之为链接库。

 链接库分为动态链接库静态链接库

  • 动态链接库,也就是所有的程序公用一份代码,虽然方便省空间,但是一旦链接库被删,那么所有的程序将无法运行!
  • 静态链接库,就是所有程序都拷贝一份代码自己用,这样虽然库删除之后会正常运行,但是会使代码的空间异常的大,通常在几十倍到几百倍左右。

静态库的安装

gcc

yum install -y glibc-static

g++

yum install -y libstdc++-static

说明:

Linux下生成可执行程序默认使用动态库
使用静态库需要后加 -static选项。
库通常在lib64目录下,以.so.数字 为后缀。
查看可执行程序所用的库——ldd 【文件】

如何验证静态链接的空间大呢?
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

用ll指令看生成的大小
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

添加调试信息

指令

gcc test.c -g

结果:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

二、项目自动构建化工具——make与makefile

概念讲解

 我们先来了解一下make与makefile,make是一条指令,功能是找到makefile,并执行相应的指令,makefile就是一个文本文件,里面存放的是构建项目的指令,即依赖关系和依赖方法

  • 我们为啥要学这个工具呢?

当我们需要生成可执行程序时,有一大堆的源文件,不多就几百个,你是愿意每次生成一个可执行程序都用gcc命令敲个几分钟,还是用make与makefile几秒搞定呢?答案不了了之。熟练使用这两个工具也在一定程度上提高了我们对大型项目的掌控能力同时也提高了效率

  • 有小伙伴可能会问,makefile既然是个文本文件,我们能不能用其它名字代替呢?

答案是可以的,但限制在这几个名字“GNUmakefile”、“makefile”、“Makefile”,而且优先级从前往后,推荐使用“Makefile”(比较显眼)。别的名字make可就找不到了哦!

  • makefile 和make 通常都涉及啥呢?

makefile 里面主要是处理源文件与可执行程序的关系,涉及的工具就是编译器和链接器

下面我们就来操作一下,用的还是我们上面的代码。

基本使用

① 首先我们创建一个Makefile文本文件

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
② 用vim进行编辑,添加依赖关系和依赖方法
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
补充: 每个依赖关系的下一行必须隔一个Tab键才能写依赖方法
这样简单的就写好了!我们保存并退出用一下吧。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
用法为:make 加 需要进行的操作,即 :左边的部分 ,当然你也可以不写这样默认执行的就是第一条依赖关系对应的指令。

如何验证呢? 我们将项目清理一下。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
直接make后面不加内容。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
执行的就是我们在Makefile里面的第一个依赖关系里的指令。

我们再make一下行不行。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
结果出现了这样的内容:test.exe已经是最新的了。

为啥会出现这样的内容呢?或者说这样的原理是什么?

make指令既然说,test.exe最新的,那就有对时间的比较,跟谁比较呢?肯定是源文件的时间信息比较了。怎么看时间信息呢?

指令:stat 【文件】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
只要test.exe文件修改的时间比test.c的内容更新,那就不用修改,这是咋比较呢?还记得时间戳吗?转换成时间戳比较看谁大谁小即可。

那如果我们想要更新test.c时间呢?

指令:touch 【文件】 

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
我们再make一下。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
此时是成功重新生成的。

那如果我们不管啥时候都想make一下且成功执行呢?

那就需要关系——.PHONY : 【目标文件】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

我们保存并退出多次执行make。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
这样make就不管什么时候都会执行。

但是一般我们是这样的写的~

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
这里再补充两个小操作~

①不显示make依赖关系的内容。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

②替换——$@用于替换:左边的内容,$^用于替换 :右边的内容。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
我们看一下效果吧:【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

三、进度条小程序

基本概念

结合前面的vim 、gcc、make与makefile 我们就可以在Linux上写一个小程序了!

首先我们看一下最终版本。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
话不多说,开干,玩的就是真实!

首先我们看一个固定的格式,分为进度条部分,显示的进度,光标,三个部分。

首先我们要解决的第一个问题就是——怎样让进度一直在同一行打印出来?

这里涉及两个概念——换行与回车。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

这也就是说,我们在C语言的\n和键盘上的回车键其实涉及包含两个操作,回车+换行。

那回车操作怎么表示呢?\r
还有一个概念——缓冲区。

1.在程序打开时,会默认打开三个流,默认输出流(stdout),默认输入流(stdin),默认错误流(stderr)。
2.在Linux中,缓冲区我们可以理解为一个不算太大的字符数组,当这个字符数组满时,或者程序结束,或者遇到\n等会刷新缓冲区的字符时,它会自动将内容输出并重新初始化。
3. 在Linux中,当我们需要强制进行刷新时,需要fflush函数,参数为需要刷新的流,所在头文件为stdio.h。在这里我们需要刷新的流为stdout。

那这里我们就具备了写进度条的基本能力。

操作

我们先写一个倒计时稍微练练手。

在写程序之前我们需要将项目的框架先搭建好。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
我们先写一个倒计时。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

OK,我们再写一个简单的进度条。

主要功能我们在processbar.c实现

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
还差一个旋转光标和颜色以及箭头的问题。

旋转光标同理——我们可以不断覆写 - | / \ 达成效果。

颜色我们这里使用的一些参数,我就在这里列出来,方便使用。

#define NONE         "\033[m"//这个算是结束标志
#define RED          "\033[0;32;31m"
#define LIGHT_RED    "\033[1;31m"
#define GREEN        "\033[0;32;32m"
#define LIGHT_GREEN  "\033[1;32m"
#define BLUE         "\033[0;32;34m"
#define LIGHT_BLUE   "\033[1;34m"
#define DARY_GRAY    "\033[1;30m"
#define CYAN         "\033[0;36m"
#define LIGHT_CYAN   "\033[1;36m"
#define PURPLE       "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN        "\033[0;33m"
#define YELLOW       "\033[1;33m"
#define LIGHT_GRAY   "\033[0;37m"
#define WHITE        "\033[1;37m"

那如何实现闪动的效果呢?我们可以在进度为偶数时打印一种颜色,为奇数打印另外一种颜色

那如何将有一个箭头呢?其实在每次写入时,多写一个箭头,下次覆盖即可。
将这些功能补充,我们的代码就是这个样子的:

头文件:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

process.c文件
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
至于一些更偏向实际的用法这里就不多说了,我们目前所学涉及的就是一个回调函数。

四、版本控制器——git

故事背景

  • 由于Linus在维护Linux时,需要做大量的版本维护工作,为了提高效率,使用管理版本的工具迫在眉睫,前期工作得到了一家运营版本管理工具的公司的支持,但Linux维护的社区的人才过于强大,试图将此工具破解,进而想砸了这家公司的饭碗,这家公司的老板就此撤销了使用权,Linus不想再干当初的大量的活,于是便在几个星期内写了第一版开源git,并在Linux社区不断发展,因此才有了今天便捷好用的git。

  • 如今我们在国内的网站gitee以及github,都是基于git发型的商业化版本,很像我们之前说的基于Linux内核发展而来的一些Linux操作系统。

功能

  • 一款分布式的具有网络功能的版本控制软件。

基本使用

如果在Windows上使用git,可以看此教程:

gitee(码云)的注册和代码提交【手把手】
说明:看这篇文章的前提是已经安装好git了。

下面我们是在Linux下手把手教程。

  • 第一步:在gitee上注册账号并新建仓库。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

这是我所创建的仓库。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
C语言外,比如C++,你在初始化仓库那里将语言.gitignore设置为C++即可。

  • 第二步:在Linux上检测是否安装git软件。

指令

git --version

如果显示下图,说明已经安装了。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
如果其它情况,我们安装一下git

root账号下执行如下命令。

yum install -y git
  • 第三步:把远端仓库拉到本地仓库

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
然后在Linux下执行如下命令。

git clone 【复制的内容】

然后输入你gitee的账号和密码,这是我的

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
输入完之后,仓库会被克隆到本地。

我这里把上面写好的Linux小程序,移到到本地仓库。

然后我们就开始将写好的小程序,上传到远端仓库。

执行指令①

git add .//这里的 . 的意思是将新增的内容添加到本地仓库

执行指令②

git commit -m "添加的文件的信息"//也就是说你干了啥

到这里可能会出现下面的信息。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
这里我写的就是我的邮箱和账号。
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

执行指令③

git push

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
说明:如果版本过老,我们再在root账号下执行安装命令即可。

再看gitee上你的仓库有没上传东西,有没有小绿点,即可查看是否上传成功!

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
很明显,上传成功了。


实用小操作①——查看日志信息

git log

这里是我刚上传的进度条的日志:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
实用小操作②——过滤不想要的文件

编辑此文件:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
添加想要过滤的文件后缀:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
保存并退出即可。

五、调试器——gdb

基本说明

为了更好的理解gdb,这里给出示例代码进行调试。

调试代码:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
Makefile内容:
【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 我们生成可执行程序,再查看调试信息。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

  • 我们再来启动gdb程序进行调试。

基本使用

前提:先要保证自己下载好gbd。
下载指令:

yum install -y gdb

①启动gdb

指令:

gdb 【文件】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

②查看代码

指令:

l 【行号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

③设置断点

指令:

b 【行号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

④查看断点信息

指令:

info b

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

说明:Num所在行,为断点的编号

⑤禁用断点

指令:

disable 【断点的编号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑥启用断点

指令:

enable 【断点的编号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑦从开始运行到第一个断点处

指令:

r

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑧在函数的开头的第一句有效代码里面设置断点。

指令:

b 【函数名】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑨运行到下一个断点

指令:

c

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑩逐过程调试(相当于vs的f10)

指令:

n

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑪逐语句调试(相当于vs的f11)

指令:

s

说明:在一般语句下,与逐过程调试没区别,在执行函数调用语句会进入函数内部。

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑫查看变量的值

指令:

p 【变量名】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑬动态显示变量的值——监视窗口

指令:

display 【变量名】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
说明:之后再进行调试,会动态显示变量的值。

这里的变量最左边的数字为其编号。

⑭取消监视窗口

undisplay 【变量的编号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
结果:之后再调试,就不显示监视窗口了。

⑮直接运行到某一行(有效代码)停止

指令:

until 【行号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑯查看函数栈帧

指令:

bt

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑰运行完当前的函数

指令:

finish

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑱删除断点

指令:

delete breakpoints
//删除所有断点

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记
指令:

delete breakpoint 【断点编号】

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

⑲退出gdb

指令:

q

【Linux进阶之路】gcc/g++、Makefile、git,Linux进阶之路,linux,git,运维,笔记

说明:由于这里是正在调试阶段,所以这里会询问你是否要终端调试并退出,毕竟退出后所有的断点信息都不会保存。

其余的指令:

info(i) locals:查看当前栈帧局部变量的值
set var:修改变量的值

详细的指令:

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb

总结

 今天的分享就到这里了,如果觉得文章不错,点个赞鼓励一下吧!我们下篇文章再见文章来源地址https://www.toymoban.com/news/detail-532055.html

到了这里,关于【Linux进阶之路】gcc/g++、Makefile、git的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux运维:makefile

    Makefile 是一种用于自动化构建的文件,它描述了一个软件项目的编译规则和依赖关系,并提供了一些工具来自动执行这些规则。 Makefile 的主要作用如下: 自动化编译:通过 Makefile,可以定义项目中的编译规则和依赖关系。这样,当源代码发生变化时,只需要执行 make 命令,

    2024年02月06日
    浏览(30)
  • Linux 开发工具vim、gcc/g++、makefile

    目录 Linux编辑器-vim 1. 基本概念 2. 基本操作 3. 正常模式命令集 4. 末行模式命令集 5. 其他操作 6. 简单vim配置 Linux编译器-gcc/g++ 1、基本概念  2、程序翻译的过程 3. gcc如何完成程序翻译 4、动静态库  Linux项目自动化构建工具-make/Makefile 1、背景 2、创建makefile 3、原理 5、项目清

    2024年03月11日
    浏览(63)
  • 【Linux】Linux编译器-gcc/g++ && Linux项目自动化构建工具-make/Makefile

    目录 Linux编译器-gcc/g++使用 1.背景知识  Linux中头文件的目录在 Linux 库 条件编译的典型应用 2.gcc如何完成 动态库 vs 静态库 debug release Linux项目自动化构建工具-make/Makefile 背景 用法 特殊符号  预处理(去注释,头文件展开,条件编译,宏替换) 编译(生成汇编) 汇编(生成

    2024年02月20日
    浏览(47)
  • Linux开发工具:yum、vim、gcc/g++、makefile

    在 Linux 下安装软件一共有三种方式: 源代码安装 有很多开源软件的源代码会被作者放在Github/Gitee 等网站上, 可以将这些源代码下载在本地. 通过直接在本地将这些源代码进行编译链接生成可执行程序 . 在嵌入式编程中, 经常用到交叉编译来处理不同平台的适配性. rpm包直接安装

    2024年01月19日
    浏览(44)
  • 【Linux 入门篇(三)】Vim、Gcc、Make、Makefile、Shell

    Linux系统都会自带vi编辑器,vim编辑器需要另外安装。 安装命令: sudo apt-get install vim 使用vi命令打开文件: vim test.c 1.1 一般模式 用vim打开一个软件以后自动进入到此模式。 1.2 编辑模式 一般模式中无法编辑文件,要编辑文件就要进入编辑模式,按下“i、I、a、A、o、O、s、

    2023年04月14日
    浏览(35)
  • 【Linux】gcc编译过程、make和makefile的概念与区别、Linux简单进度条实现

      1. 预处理(进行宏替换)   2. 编译(生成汇编)   3. 汇编(生成机器可识别代码)   4. 连接(生成可执行文件或库文件)   预处理(Preprocessing):在这个阶段,gcc会对源代码进行预处理,主要包括处理宏定义、头文件包含、条件编译等操作。预处理器会根据预处

    2024年02月12日
    浏览(37)
  • 【Linux】编译器gcc | make | Makefile | 模拟进度条 | gitee

    目录 1. 编译器 gcc 1.1 背景知识 1.2 gcc如何完成 2.1 Makefile背景 2.2 Makefile原理 2.3 Makefile常用符号 3. 模拟倒计时 4. 模拟进度条 5. 使用 git 命令行 5.1 安装 git 5.2 创建项目下载到本地 5.3 推送本地代码到远端仓库 1. 编译器 gcc 1.1 背景知识 预处理(进行宏替换) 编译(生成汇编) 汇编

    2024年03月12日
    浏览(60)
  • Linux :vim ,gcc ,makefile 三件套之vim的基本使用

    ​ vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版,而 gVim 则是其 Windows 版。它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘流的各种巧妙组合操作却能带来极为大幅的效率提升。尽管 Vim

    2024年04月25日
    浏览(32)
  • Linux下gcc编译,动态库和静态库,makefile,gdb调试

    展开头文件, 宏替换(变量宏、函数宏)、替换空格等 逐行检查程序中出现的语法错误,简单的逻辑错误 将 .s 汇编文件中所有的汇编指令翻译成二进制机器码(下面就是来了个截图,二进制显示了乱码) 将 .o 的目标文件,链接库文件、数据段合并,地址回填(把汇编里相

    2024年02月08日
    浏览(49)
  • 【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用

    在学习C语言时,我们了解了预处理阶段要做的事:-预处理 这其中会经历两个阶段: 编译和链接 而编译又分为三个阶段: 预编译,编译,汇编 通过不同的选项,可以让gcc停在以上相应的阶段。 这里有一个记忆的小窍门,我们 电脑左上角的Esc键 ,顺序刚好和上面的顺序一致

    2024年02月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包