GNU

GNU is Not Unix
目标: 开发出完全免费的开发系统

gcc

GNU C Compiler
编译过程分为4个阶段

预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)

文件类型

后缀名文件类型
.cc语言源代码文件
.C,cc,.cxxC++源代码文件
.h头文件
.a由目标文件构成的库文件
.i已经经过预处理的C源代码
.ii已经经过预处理的C++源代码
.o编译后的目标件
.s汇编语言源代码文件
.S经过预编译后的汇编语言源代码文件

指令

gcc [options] [filenames]

[option] : 编译选项含义
-o 目标文件名加在filenames 后 为 生成的目标文件的名 若不加 默认为 a.out
-c只编译 不编译生成可执行文件 只生成到 .o 的目标文件
-g产生gdb调试工具所必要的符号信息
-O对程序进行优化编译、链接
-O2比-O 更好的优化
-I(dirname) 目录名将做指出的目录加入到程序头文件目录列表中#include<A.h>在系统预设的头文件目录中寻找(如 /usr/include)#include"B.h" 在当前目录下寻找头文件
L(dirname) 目录名 将做指出的目录加入到程序库文件目录列表中默认情况下 在系统能够预设目录下寻找如(/usr/lib)
l(name) 库名加载制定库 如 库名为 libm.a 只需写作 m
-static静态链接库文件 动态库后缀为.so 静态库后缀为 .a
-Wall生成所有警告信息
-w不生成任何警告信息
-DMACRO定义宏 等效于程序中写了 #define MACRO

运行

./执行文件名 执行当前目录下的可执行文件
time./执行文件名 显示运行时间的执行方案

GDB

指令

gdb 调试程序名 启动gdb 调试程序
gdb 启动gdb

助记符含义
file 调试程序名启动调试程序
l(ist)查看程序
b(reak) 函数名/行数/文件名:行号设置断点
b(reak)行号 if 条件当条件位真时,指定断点生效
info break查看所有断点
delete 断点编号删除断点
r(un)开始运行程序
n(ext)单步运行程序 (不进入子函数)
s(tep)单步运行程序 (进入子函数)
c(ontinue)继续运行程序
finish运行程序,知道当前函数结束
p(rint) 变量名查看制定变量值
watch 变量名对指定变量进行监控
q(uit)退出gdb

Makefile

格式 :

target(目标):prerequisites(依赖文件)
    command(命令) 
.PHONY : targets
targets:`command

变量

例程:
obj=main.o func1.o
hello: (obj)gcc (obj) -o hello
默认变量
$^ 代表所有的依赖文件
$@ 代表目标
$< 代表第一个依赖文件
@命令前加 取消回显
第一行目标为最终目标 一个makefile文件只有一个最后目标 完成即释放
命令行行需要tab键起始
无依赖度目标 需加伪指令.PHONY

指令

make -f 文件名 未制定 默认文件名为makefile 或Makefile

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值