zoukankan      html  css  js  c++  java
  • Unix/Linux系统编程

    一,开发工具

      编译器  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
  • 相关阅读:
    UVA10763交换学生
    UVA10763交换学生
    UVA10391复合词
    UVA10391复合词
    UVA10125和集
    UVA10125和集
    POJ3762 时间段用k次
    POJ3762 时间段用k次
    Win64 驱动内核编程-11.回调监控进线程句柄操作
    Win64 驱动内核编程-11.回调监控进线程句柄操作
  • 原文地址:https://www.cnblogs.com/fengyubo/p/4813660.html
Copyright © 2011-2022 走看看