您的位置:首页 > 运维架构 > Linux

Unix/Linux系统编程

2015-09-16 16:18 676 查看
一,开发工具

  编译器  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: