• linux下C语言(一):【基础知识】【gcc编译】【Makefile】【程序库链接】


    编译:hello.c

    1、使用GCC编译器:

     gcc -o hello hello.c

      生成名为hello的可执行文件,执行./hello即可执行(-o后面跟生成文件名)

     -c 表示只要求编译器输出目标代码,而不必输出可执行文件(生成.o目标文件)

     -g 提供GDB调试

    2、Makefile的使用:

    编译执行多个文件:

    gcc -c main.c
    gcc -c aaaa.c
    gcc -c bbbb.c
    gcc -o main main.o aaaa.o bbbb.o

    使用Makefile:

    #  Makefile 文件
    mainmain.o aaaa.o bbbb.o
      gcc -o main main.o aaaa.o bbbb.o
    main.omain.c aaaa.h bbbb.h
      gcc -c main.c
    aaaa.oaaaa.c aaaa.h
      gcc -c aaaa.c
    bbbb.obbbb.c bbbb.h
      gcc -c bbbb.c

    Makefile文件规则:

      第一行表示依赖关系,第二行是规则

      target:componets(目标:以来对象)

      TAB rule(有个TAB键)

    Makefile 有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:
    $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件

    mainmain.o aaaa.o bbbb.o
      gcc -o $@ $^
    main.omain.c aaaa.h bbbb.h
      gcc -c $<

     

    一个 Makefile 的缺省规则
    ..c.o
    gcc -c $<
    这个规则表示所有的 .o 文件都是依赖与相应的.c 文件的.例如 mytool.o 依赖于 mytool.c
    这样 Makefile 还可以变为:
    # 这是再一次简化后的 Makefile
    mainmain.o aaaa.o bbbb.o
    gcc -o $@ $^
    ..c.o
    gcc -c $<

    3、程序库的链接 

      为了使用数学函数,我们必须和数学库连,为此我们要加入 -lm 选项. gcc -o temp temp.c -lm 

      对于一些常用的函数的实现,gcc编译器会自动去连接一些常用库,这样我们就没有必要自己去指定了.

       有时候我们在编译程序的时候还要指定库的路径,这个时候我们要用到编译器的 -L 选项指定路径.比如说我们有一个库在 /home/hoyt/mylib,这样我们编译的时候还要加上 -L/home/hoyt/mylib.对于一些标准库来说,我们没有必要指出路径

     4、程序的调试  

      最常用的调试软件是 gdb.在图形界面下调试程序,可以选择 xxgdb.得要在编译的时候加入 -g 选项

     

     通过《Linux操作系统下C语言编程入门》(原 文: Hoyt 等,二次制作: AureoLEO)学习整理 

  • 相关阅读:
    debian 9 安装AMD驱动
    DDL、DML、DCL、DQL的理解
    呼叫中心坐席功能都有哪些?
    使用vi编辑器的问题
    百度聊天机器人UNIT http访问
    通过http方式 post天气,并合成语音
    单链表的基本操作
    pip下载慢解决(添加国内镜像)
    Anaconda+Tensorflow配置说明
    gdb的基本使用
  • 原文地址:https://www.cnblogs.com/yujiamin/p/7245127.html
Copyright © 2020-2023  润新知