【makefile Step by Step 1】背景: GCC和G++的使用

实习生活开始了,接触了一些新的框架,后台开发基本就使用C++了,话说这个C++自从大一做完课程设计几乎就没有用过,现在重新要捡起来了。所以,有时间就记录一下学习笔记吧,开发环境当然也是Linux,想一想在学校早一点告别集成开发环境还是很有必要的,离开那些图形化的开发环境,我们就要使用makefile来进行程序的编译了。使用makefile的基础就是要先掌握GCC和G++编译器的基本命令了。

Gcc和G++都是GNU的编译器,前者主要用于编译C程序,而后者则主要用于C++语言。这篇文章就分享这两个编译器的最基本的使用方法(适合想入门的同学)。

其实在编译阶段两个编译器是几乎一样的,如果使用g++来编译C或者C++,在编译阶段也是用的gcc,一点区别是gcc不能自动的去链接iostream那些库,所以如果你直接用gcc编译链接一个cpp文件时就会出现下面的错误:

/tmp/cc9TqiKR.o: In function `__static_initialization_and_destruction_0(int, int)’:
main.cpp:(.text+0×23): undefined reference to `std::ios_base::Init::Init()’
main.cpp:(.text+0×28): undefined reference to `std::ios_base::Init::~Init()’

现在了解一些GCC编译的几个阶段:预处理,编译,汇编,链接。

预处理主要是处理include,define等命令,比如我们定义了一个宏,这个阶段结束之后,这个宏就替换为真实的数值了

编译就是将.c文件编译为.s,这时候C语言就转换为汇编语言了,

汇编顾名思义,就是把刚才的汇编代码转换成机器码了

链接是最后一步,将各个.o文件链接,生成可执行文件,我们常见的link error就放生在这个阶段,主要放生在有多个源文件的时候。

现在就用GCC做例子,假如我们有一个main.c的源文件,一句命令将其编译连接生成可执行文件

    gcc -o exec main.c

其中 -o是命令选项 表示生成可执行文件了 后面接的参数 exec就是 这个文件名,可以自定义,最后跟上源文件,很简单吧。

假如我们只想进行编译汇编阶段,可以用-c命令,例如:

  gcc -c main.c

这样就会生成 main.o文件,之后可以单独进行链接的操作。

当然gcc 还有很多的命令,比如 -E是 只进行预处理阶段 当你需要GDB调试的时候,加上-g参数

今天就写这些~ 这就是makefie的一些基础,明天跟上基本的makefile的使用~~

原文链接: https://www.cnblogs.com/octobershiner/archive/2012/07/25/2608768.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    【makefile Step by Step 1】背景: GCC和G++的使用

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/56746

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午7:34
下一篇 2023年2月9日 上午7:36

相关推荐