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)学习整理 

  • 相关阅读:
    iOS-iOS调用相机调用相册【将图片保存到本地相册】
    iOS-image图片压缩
    iOS-沙盒目录
    iOS-Xcode代码统计
    Django基础之Model操作
    Django objects.all() ,objects.get() ,objects.filter()之间的区别
    django从1.7升级到1.9后 提示:RemovedInDjango110Warning
    关闭TCP中135、139、445、593、1025 等端口的操作方法 (转)(记录下)
    oracle decode函数和 sign函数
    Apache的主要目录和配置文件详解
  • 原文地址:https://www.cnblogs.com/yujiamin/p/7245127.html
Copyright © 2011-2022 走看看