Unix/Linux系统编程
2015-09-16 16:18
676 查看
一,开发工具
编译器 GCC
调试工具 GDB
代码编辑 Vim
1. 编译命令
-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,对应的编译命令则是
但是一旦修改某个文件就需要再手打一遍以上三条命令。使用Makefile以后,只要一条简单的 make 命令就全部搞定。
Makefile 书写如下
更高级一点的,还可以加入宏来避免在Makefile出现的“硬编码”。
补充:
$@ 代表当前的目标(target)
makefile 规则
编译器 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 test prog.o: prog.c code.h gcc -c prog.c -o prog.o code.o: code.c code.h gcc -c code.c -o code.o clean: rm -f *.o test
更高级一点的,还可以加入宏来避免在Makefile出现的“硬编码”。
OBJS = prog.o code.o CC = gcc CFLAGS = -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 <tab> gcc -o 欲新建的可执行文件 目标文件1 目标文件2
相关文章推荐
- linux命令
- exit()与_exit()函数的区别(Linux系统中)
- 理解linux 的 inode][解决inode耗尽问题
- CentOS 7 64位 安装 PostgreSQL 9.2整理
- zabbix_server 在centos6.3中的安装过程记录
- linux下用vim编写C/C++工程(多个源文件)的基本方法
- Linux下rz/sz的安装和配置
- 解决 CentOS 6.4 升级 Python2.7 后 Ibus 输入法无法使用问题
- 关于Linux用vi编辑器建立一个新文件
- 【转】linux 用户线程、LWP、内核线程学习笔记
- cent6 安装rdp
- Linux C
- linux下ssh安装与scp命令使用详解
- 【Linux】test命令
- 关于linux打印某个文件内容的命令
- (转)Linux Socket
- unix/linux编程实践教程------学习笔记(四)
- CentOS7下进入单用户模式
- netstat samples
- Linux 2.6.10内核下PCI Express Native热插拔框架的实现机制