zoukankan      html  css  js  c++  java
  • makefile

    来源:http://www.cnblogs.com/chenwenbiao/archive/2011/10/17/2214550.html

    makefile实例:

    原文地址:http://hi.baidu.com/hellosim/blog/item/42e78341b40c3e8db2b7dce3.html
    转载请注明出处

    我个人认为makefile是把编译-链接-执行的命令写在一起,其实就是一个脚本文件,

    使命令不用一条一条写,直接刷命令而已。

    1.hello.c

    #include <stdio.h>
    int main()
    {
        printf("Hello World! ");
        return 0;
    }

    2.Makefile

    hello : hello.o                                             #生成的文件
        cc -o hello hello.o                                    #需要执行的命令

    hello.o : hello.c
        cc -c hello.c

    clean :                                    #没有生成任何文件,所以后面没哟任何参数

        rm hello.o                           #执行的命令

    说明:cc -o hello hello.o前面是一个tab的空格

    3.执行make,产生可执行文件hello

    输出如下:
    cc -c hello.c
    cc -o hello hello.o

    4.执行make clean,删除产生的中间文件hello.o

    输出如下:
    rm hello.o


    另转:http://hi.baidu.com/s_rlzheng/blog/item/4bc10a06892e217d030881ef.html

      本来早就应该学Makefile了,只是我偷懒,现在才学呵呵^_^makefile的好处叫我说,老实说我也说不出什么之所以然来,但是可以肯定的是它是linux平台的软件工程师都要必备的知识^_^

    一、程序的编译及链接

        我们编译程序,无非是想要得到一个可执行文件,而这个过程则是经过这两步:

    ***.c->编译->***.o->链接->可执行文件。即.c经过编译得到.o文件,.o文件是一个中间文件,再对这些中间文件进行链接最终可得到可执行文件。

    二、Makefile的规则

    首先,来看一看Makefile的书写规则:

    target ... : prerequisites ...

                command

                ...

                ...

        target也就是一个目标文件,可以是.o文件,也可以是执行文件,还可以是一个标签(Label)。

        prerequisites就是,要生成那个target所需要的文件或是目标。

        command也就是make需要执行的命令(任意的Shell命令)。这里要注意的是在命令前面要加上一个tab键,不是空格,是按一个tab键按出来的空格。

         这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比 target文件要新的话,command所定义的命令就会被执行。这就是Makefile的规则,也就是Makefile中最核心的内容。这是Makefile的主线和核心,但要写好一个Makefile还得继续努力。

    三、一个最简单的Makefile例子

    如有一个工程,含有3个头文件及四个c文件,那为了生成所需的可执行文件,这时的Makefile可以这样写:

    test:main.o t1.o t2.o t3.o

         gcc –o test main.o t1.o t2.o t3.o

    main.o:main.c

         gcc –c main.c

    t1.o:t1.c t1.h

         gcc –c t1.c

    t2.o:t2.c t2.h

         gcc –c t2.c

    t3.o:t3.c t3.h

         gcc –c t3.c

    clean:

         rm test main.o t1.o t2.o t3.o

    到这里一个最简单的makefile就写好了,把它的名字保存为Makefile就可以了,这时你只要在终端敲一下make,它就自动帮你编译链接了^_^如果敲入make clean,它将删掉那些中间文件及可执行文件。

  • 相关阅读:
    投票通过,PHP 8 确认引入 Union Types 2.0
    Laravel 菜鸟的晋级之路
    给公司写的composer包开发的规范
    Swoft 源码剖析
    听说PHP的生成器yield处理大量数据杠杠的
    读懂JWT的使用,你就会用PHP如何实现了
    python标准库及其它应用
    python常用算法题
    python迭代器实例
    python生成器实例
  • 原文地址:https://www.cnblogs.com/zhangjianrong/p/4615443.html
Copyright © 2011-2022 走看看