Makefile基础用法总结(一)

1.写一个Makefile

1.1要素

  • 目标 生成目标。
  • 依赖项 源文件、o文件(自动推导编译)
  • 执行代码
<first_make.c>

<makefile>

first_make:first_make.c

gcc first_make.c -o first_make

1.2执行

make 


2. GCC

2.1 预处理(Preprocessing)

预处理包括宏处理、导入头文件。
预处理阶段错误:宏定义错误,找不到头文件……

2.2 编译(Compilation)

编译针对单个C、CPP文件进行,不针对整个项目,不了解关联性错误,将单个C/CPP文件生成汇编码。
编译阶段错误:语法错误

2.3 汇编(Assembly)

生成二进制文件,.o文件。

2.4 链接(Link)

链接所有的.o文件以及动态链接库。
链接错误:找不到.o,找不到链接库,某个函数只有声明没有定义。

2.5 GCC常用选项

  • –c
    仅针对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。

  • -g[gdb]
    在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试。

  • -O[0、1、2、3]
    对生成的代码使用优化,数字代表优化级别,缺省默认为2级优化,0为不优化。注意:采用更高级别的优化并不一定得到效率更高的代码。

  • -Dname[=definition]
    将名为name的宏定义为definition,如果中括号部分缺省,则宏被定义为1。

  • –Idir
    在编译源程序时增加一个搜索头文件的额外目录—dir,即include增加一个搜索的额外目录。

  • –Ldir
    在编译源文件时增加一个搜索库文件的额外目录—dir。

  • –llibrary
    在编译链接文件时增加一个额外的库,库名为liblibrary.so。

  • –w
    禁止所有警告。

  • –Wwarning
    允许产生warning类型的警告,warning可以是:main、unused等,最常用是-Wall,表示产生所有警告。如果warning取值为error,其含义是将所有警告作为错误(error),即出现警告就停止编译。

2.6 代码

<gcc_test.c>

 
预编译

<gcc命令>

生成预编译后的代码,重定向到test.i进行查看,也可以不输出、不查看。

编译

<gcc命令>

生成test.s汇编码文件。

汇编

<gcc命令>

生成二进制test.o文件。

链接

<gcc命令>

<gcc命令>

生成可执行文件

运行

运行时加载动态链接库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值