既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
一般的头文件都在 /usr/include/ 目录下,用 ls 查看:
编译
**gcc 首先要检查代码的规范性、是否有语法错误等,在检查无误后,gcc 把代码翻译成汇编语言
命令:gcc –S test.i –o test.s**
-S:该选项只进行编译而不进行汇编,生成汇编代码
这些都是汇编指令,我们在这里只需知道大致过程,不对这些文件做深入探讨。
汇编
汇编阶段是把编译阶段生成的".s"文件转成目标".o"文件–可重定位的目标文件
命令:gcc –c test.s –o test.o
-c:该选项只进行汇编,对程序进行翻译,然后停止,不进行链接
从开始到这一步,我们是对我们写的代码进行操作,写过函数的伙伴都知道,先实现才能调用。我们文本中用了打印函数 printf ,但我们并没有实现它,那么它在哪?怎样才能让它和我们写的ptintf 函数的调用产生联系?
不需要我们写的,可以直接调用的函数,都在C标准库中:
链接
最后一步就是回答上一步问题:
-o:将我们写的调用函数与库中函数的实现产生链接
命令:gcc test.o –o mytest
查看可执行文件依赖的库:
动静态库
动态库
一般链接过程中,默认用到的库是动态库,后缀为.so
优点:大家共享一个库,可以节省资源
缺点:一旦库确实,会导致几乎所有程序失效
静态库
将库中的相关代码,直接拷贝到自己的可执行程序中
如果我们想静态链接,在链接步骤后加 -static,静态库后缀为.a:
命令:gcc test.o -o mytest2 -static
优点:不依赖任何库,程序可独立运行
缺点:浪费资源
安装c语言的静态库:yum install -y glibc-static
安装c++的静态库:yum install -y libstdc+±static
学会用gdb调试程序
创建新的文件,求10以内数的累加和:
进入退出
生成debug版本
我们可以看到给我们的提示:未找到调试符号
Linux默认生成的可执行程序是release版本,不支持调试,我们要先将可执行程序变成可调试的debug版本:
l:显示代码段
b、info:打断点 、查断点
r:直接运行
停到断点处,没有断点直接运行完程序
c:一个断点跳到下一个断点
s:逐语句
若有函数情况下,想要进入函数则继续s即可,不想要进入函数则n,n是逐过程执行。
p:查看变量
display:常显示
用p查看变量后,再次逐语句或者逐过程执行后,不会再显示出变量,这需要我们再次用p查看,想要做到和vs下监视窗口一样的话,就需要用到display
undisplay:取消常显示
until:跳转到指定行
如果我们进入到循环后,想跳出循环的话,一种方法就是一直走完循环,想快速跳过,可以
until+ 行数 :
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
(img-KR8vLWFt-1715551807075)]
[外链图片转存中…(img-bjFiEsv6-1715551807076)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新