GCC Basic

2018-04-14 23:23:51 +08:00
 chanlion

想学好编程 C/C++应该是个避不开的,因为几乎所有重要的程序的底层都是用 C/C++写的,而绝大多数的开源 C/C++都是用 GCC 编译下 Linux 运行环境中,所以掌握 GCC 的用法是十分必要的,了解 GCC 在 Linux 下编译程序的步骤是非常有必要的。

GCC 是 GNU Compiler Collection 的缩写,这个编译器套件支持多种语言,最著名就是 C 和 C++ 了。别的一些语言像 Java 用的肯定就少了,但是它也支持,还支持 Fortan、Objcect-C、Ada 语言。除了 GCC 之外,GNU 定义一套 GNU Toolchain 来开发应用和操作系统,这些都是非常有必要去了解的,比如 Autotools 中的 Automake、Autoconf、Autohead 就在程序跨平台编译中起到重要作用,我观察在开源的项目中有不少应用到此工具。gdb(GNU Debugger)用来调试 C/C++ 程序非常有用,可以打断点、看到堆栈信息以及局部变量的值,跟在 IDE 中使用调试工具没什么两样,这样就在 print 的基础上多一个有力的工具。而 gdb 的用处还不仅仅在于此,gdb 可以看到 CoreDump 的堆栈信息,能够在程序崩溃时定位到具体的问题,我就因此受益了,前段时间我的棋牌服务器程序总是莫名宕机,通过 gdb 查看 CoreDump 文件的信息发现了是缓冲区溢出导致的。GNU Make 这个不用多说,几乎任何 Linux 下的项目都会手写或者生成一个 Makefile 文件,前面的 Automake 生成的也是 Makefile 文件。还有 GNU Binutils 包括链接( ld )、装载和汇编器这些重要工具。以及 GNU Bison 一个词法生成器,还有就是 m4 通用宏语言。

可以看出整个这一套工具围绕都是怎样编译程序最终生成一个可执行的文件,这套工具链构建了几乎整个 Linux 大厦,并且繁荣了 C/C++ 几十年之久。我很想学好 C/C++ 语言,投资这套东西绝对是有益的。

https://mrlongx.com/index.php/2018/04/13/gcc-basic/

2362 次点击
所在节点    C
3 条回复
linux40
2018-04-15 10:27:08 +08:00
autotools 有什么靠谱的生成 compile_commands.json 的工具吗?试过`bear make`,结果生成了一个空的。
tempdban
2018-04-15 10:54:35 +08:00
@linux40 不是 CMake 好像只有 bare
linux40
2018-04-15 18:40:26 +08:00
@tempdban 转 CMake 也可以,不过我网上查了一下,以前 KDE 这么干过,用了 autotools 转 CMake,但是脚本找不到了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446898

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX