博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unix/Linux系统编程
阅读量:5038 次
发布时间:2019-06-12

本文共 1339 字,大约阅读时间需要 4 分钟。

一,开发工具

  编译器  GCC

  调试工具 GDB

  代码编辑 Vim

1. 编译命令

gcc hello.c -o hello  # 第二个hello为新生成的可执行文件名

  -o  为生成的可执行文件指定名称。

  -Wall  打印所有警告。

  -E  把用户定义的所有的预定义#define展开,会生成 .i 后缀的C源文件。

  -c  生成二进制文件,后缀名 .o 

  -g  生成可调试的可执行二进制文件

2. 调试命令

  l        list的简写,从第一行开始列出代码

   break 16    设置断点,在代码第16行

   break func   设置断点,在函数func()入口处

   info break    查看断点信息

   r         run的简写,运行程序

   n              next的简写,执行下一条语句

   p i       print i 的简写,打印变量 i 

   c       继续运行程序,continue命令简写。

   bt       查看函数堆栈。 

   finish    退出函数

   q      退出gdb

二,编写Makefile

  假设有三个文件 prog.c、 code.c、 code.h,对应的编译命令则是

$ gcc -c code.c -o code.o$ gcc -c prog.c -o prog.o$ gcc prog.o code.o -o test

 

  但是一旦修改某个文件就需要再手打一遍以上三条命令。使用Makefile以后,只要一条简单的 make 命令就全部搞定。

  Makefile 书写如下

test: prog.o code.o        gcc prog.o code.o -o testprog.o: prog.c code.h        gcc -c prog.c -o prog.ocode.o: code.c code.h        gcc -c code.c -o code.oclean:        rm -f *.o test

 

  更高级一点的,还可以加入宏来避免在Makefile出现的“硬编码”。

OBJS = prog.o code.oCC = gccCFLAGS = -Wall test: $(BOJS)        $(CC) $(OBJS) -o test $(CFLAGS)prog.o: prog.c code.h        $(CC) -c prog.c -o prog.o $(CFLAGS)code.o: code.c code.h        $(CC) -c code.c -o code.o $(CFLAGS)clean:        rm -f *.o test

   补充:

  $@  代表当前的目标(target)

  makefile 规则

目标(target) : 目标文件1 目标文件2
gcc -o 欲新建的可执行文件 目标文件1 目标文件2

 

转载于:https://www.cnblogs.com/fengyubo/p/4813660.html

你可能感兴趣的文章
C# 100以内质数
查看>>
线程学习一:创建线程
查看>>
UNIX系统文件
查看>>
3d转换-正方体-Html5Css3-遁地龙卷风
查看>>
Car Flash ECU Programmer From autonumen
查看>>
WinForm控件复杂数据绑定常用数据源(如:Dictionary)(对Combobox,DataGridView等控件DataSource赋值的多种方法)...
查看>>
Mongodb数据查询 | Mongodb
查看>>
java.util.List类学习
查看>>
1.jstl c 标签实现判断功能
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
超详细的Guava RateLimiter限流原理解析
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
Swift - RotateView
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
关于多路复用器的综合结果
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>