• 用gcc去编译c程序


    编译的时候首先要进入到你的c文件所在的那个目录,不然找不到原文件,通过ls命令可以察看当前目录下的文件

    一:编译单C文件
    gcc text.c  会默认产生a.out文件,即默认的目标代码文件
    gcc    -c  text.c   会产生和源文件同名的目标文件即:text.o
    gcc    text.c  -o   liu     产生名为liu的可执行文件    或者  gcc   -o   liu   text.c     ./liu就可以执行程序了


     二:用到非系统默认类库

    比如用到多线程类库pthread
    gcc   text.c -o  liu  -lpthread   或者gcc  -o  liu   text.c  -lpthread     -lpthread一定放在最后面,即,在-l后面加上你要用到的类库


    三:多个源文件进行编译,即 makefile 的编写或者Makefile
    makefile的好处是防止源文件的重复编译

    比如有好多个源文件,某天对其中一个源文件进行修改,如果不写makefile的话,需要将整个工程的所有文件重新编译一遍,非常麻烦,有了makefile,说明了每个源文件的依附关系,当某个源文件改变的时候只需重新编译一下关联的源文件就好。

    例如:有以下文件

    one.h

    one.c

    two.h

    two.c

    main.c

    main.c 中引入one.h 和two.h两个头文件,one.c two.c 分别实现两个头文件中定义的函数

    有两种方式编译运行该程序,


    一:手动单独编译

    gcc -c one.c

    gcc -c two.c

    gcc -c main.c

    gcc -o main main.o one.o two.o

    ./main

    二:makefile

    那么只需在任何一个文本编辑器里面写下如下命令,并保存为makefile

    main:main.o one.o two.o

    tab键gcc(或者cc)-o main main.o one.o two.o

    main.o:main.c one.h two.h

    tab键gcc(或者cc)-c main.c

    one.o:one.c one.h

    tab键gcc(或者cc)-c one.c

    two.o:two.c two.h

    tab键gcc(或者cc)-c two.c

    这些源文件都需要在同一个目录下,并且在main.c中引入one.h 和two.h的时候要用"one.h"  "two.h"不要用<>否则编译器会到系统类库文件中去找,是找不到的。

    然后在同一目录的终端下,输入make命令,那么编译就开始了,没有什么错误的话,执行./main就可以让你的程序跑起来了。

    还可以对makefile进行精简:

    首先有三个符号:

    1 $@    代表目标文件

    2 $<     代表第一个文件

    3$^      代表所有依赖文件

    所以上面命令可以精简为:

    main:main.o one.o two.o

    tab键gcc(或者cc)-o $@ $^

    main.o:main.c one.h two.h

    tab键gcc(或者cc)-c $<

    one.o:one.c one.h

    tab键gcc(或者cc)-c $<

    two.o:two.c two.h

    tab键gcc(或者cc)-c $<

    以上makefile还可以精简:

    一个新的符号:.c.o

    该符号自动搜索相关联的源文件和头文件

    于是makefile还可以写为:
    main:main.o one.o two.o

    tab键gcc(或者cc)-o $@ $^

    .c.o: 
    tab键gcc(或者cc) $<

    最好在加上clean命令,将生成的目标文件和执行文件删除,遵守优雅简洁原则,呵呵,方便再次编译

    clean:

    ab键gcc(或者cc)rm main main.o one.o two.o

    makefile的格式大家要记住了,至于问什么这样写,只能说这是标准,makefile还有很多高深的用法,以后在逐渐去学习。

    Ok,不对的地方大家请指正,有疑问的地方请留言

  • 相关阅读:
    壁纸网站收藏
    LaTeX公式学习
    最简单的音乐播放器,实现播放器基本功能
    计算机视觉领域的牛人博客、研究机构、博客
    视频压缩编码和音频压缩编码的基本原理
    MPEG-4 压缩编码标准
    视频编码标准简介
    视频压缩编码的基本原理
    数字视频原理
    视频压缩编码综述
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3003854.html
Copyright © 2020-2023  润新知