一些GNU、GDB、Linux、Clang等相关的实际上没用但是会感觉有用的东西

起因是想换个编译器为Clang,后来变成了历史补习课。

从操作系统聊起

操作系统最开始的一个成熟的较为现代的商业版本一般是指unix系统,分时操作与良好的用户界面让他十分流行。但总有些人并不安于现状,成立了早期的GNU组织,名字也非常直白:GNU‘s Not Unix的缩写(233)但遗憾的是这个项目到现在其实都没做完,但就和费马大定理一样,大家关注的可能不是这个操作系统本身了。
GNU一直都是开源的,贡献基本靠大家自觉,而其衍生出来的一个系统就是linux,现在也常用linux作为GNU的实现内核。而这种实现的linux就称为GNU/linux。而虽然GNU操作系统没有开发出来,但衍生出来的大量套件/软件/编译器却非常流行,这也是为什么上面一陀看起来完全不相关的东西能被我放在一块。
linux操作系统现在应该是有两个较为流行的实现,一个是redhat系列(代表作CentOS),另一个是debian系的(代表作Ubuntu),大概知道前者是商业公司负责维护而后者是社区自发维护的,后者也更加遵循GNU标准。

编译器与调试

这里编译器只说c系的。
GNU中有一个很知名的产物叫做GDB,他的介绍就是:The GNU Project Debugger。二者的联系不言自明。GDB是一款用于c/c++调试的软件,我们经常会在linux和windows上看到他,他支持了丰富的调试功能,并能返回较好的反馈。一些现在标配的基本功能都来自于这里,比如断点调试,地址调试等很常见的功能。
不过GDB也不只能用于c的调试,像是OpenCL,Rust,Go,Fortran,Pascal等也有支持,其余的就不那么知名了。
说完调试说说编译器,GDB当然是为gcc/g++支持的啦,GCC的名字也很明显:GNU Compiler Collection,大家都是一家人。值得一提的是GCC也是支持java生成的。MinGW就是专门为win提供的一个版本。
而相对于gcc/g++的竞品是Clang,起步相对较晚,但是在某些场景中相较于gcc有优势,有些人反映能够出现效率相差四倍的情况。后期gcc负责组织也开始进行了各种优化,现在可能两个搭配使用会更好。

图形框架

唉,一看就是要说QT对吧。qt是qt公司开发的一款c++图形框架,主要是方便大家的图形实现。现在已经成为最流行的一款图形框架。之前有微软的MFC,但MFC现在似乎被淘汰了,微软开始使用WPF作为自己的图形开发框架。(说起来我还因为这个闹出点事情)

CMake系列

最开始的时候,大家和我一样,调试几个文件就结束了,几行操作码也不算什么。但是随着项目的规模越来越大(一架战斗机的火控就有500w行),这样进行调试/项目生成已经不再满足要求了。
因此出现了最初的编译工具:make
make非常简单,就是写一下你大概需要哪些文件,然后进行编译即可。
而这当然不能满足要求,何况make只在linux端比较好用,并不能进行跨平台操作。
这就诞生了CMake等工具,就像是代码上的代码一样控制着整个程序的编译运行参数。
微软等公司当然不会坐着,vs等工具其实就算cmake的替代版。

可能以后会增加点没用的小知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C99模式和GNU模式是用于指定编译器使用的语言模式的选项。C99模式是指符合ISO C99标准的语言模式,而GNU模式是指GCC编译器的GNU方言的ISO C99模式。在Clang中,可以使用-std选项来指定使用的语言模式。如果未指定-std选项,则Clang默认使用的是GNU99模式,即GCC的GNU方言的ISO C99模式。\[1\] 引用\[2\]中提到,当GCC完全实现ISO C99标准时,GNU99模式将成为默认模式。而引用\[3\]中提到,在Linux系统下,使用gcc/g++编译器编译出来的二进制可执行程序,默认是release模式。如果要使用gdb调试,需要在生成二进制可执行程序时加上-g选项。所以,如果你想在Linux系统下使用C99模式或者GNU模式进行编译,可以使用Clang编译器,并通过-std选项指定相应的模式。 #### 引用[.reference_title] - *1* *2* [c99编译报错改用gnu99](https://blog.csdn.net/wteruiycbqqvwt/article/details/115486276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [< Linux >:Linux 环境基础开发工具使用 (3)](https://blog.csdn.net/lcc11223/article/details/127664380)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值