zoukankan      html  css  js  c++  java
  • 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)学习整理 

  • 相关阅读:
    设计模式 go语言实践-5 外观模式
    .net 5 preview发布
    设计模式 Vs实践-4 桥接模式
    设计模式 Vs实践-3 装饰器模式
    PowerDesign字段和中文名切换显示
    设计模式 Vs实践-2 抽象工厂模式
    设计模式 Vs实践-1 工厂模式
    环境变量path的值大于1024的解决办法
    powshell 输出字符编码的问题,设置为utf-8
    模拟真实点击click,专门对付clickoutside
  • 原文地址:https://www.cnblogs.com/yujiamin/p/7245127.html
Copyright © 2011-2022 走看看