• [编译] 1、第一个makefile简单例子


    前言

    本篇用一个最简单的例子引入makefile,教你编写第一个makefile

    正文

    在Download/aa文件夹下有a.c和makefile文件

    1 litao@litao:~/Downloads/aa$ ls
    2 a.c  makefile

    其中a.c为:

     1 #include<stdio.h>
     2 int main()
     3 {
     4   int i,j;
     5   for(i=0;i<10;i++)
     6   {
     7         for(j=2*i+1;j>0;j--)
     8         {
     9                 printf("#");
    10         }
    11         printf("
    ");
    12   }
    13 }

    其中makefile为:

    其格式为:

     1 a:a.o                   #linK
     2         gcc a.o -o  a
     3 a.o:a.s                 #汇编Assembling
     4         gcc -c a.c -o a.o 
     5 a.s:a.i                 #编译
     6         gcc -S a.i -o a.s
     7 a.i:a.c                 #pre-processing
     8         gcc -E a.c -o a.i
     9 
    10 
    11 run:
    12         ./a
    13 clear:
    14         rm -rf a.o a.s a.i a

    makefile文件的基本单元是规则。一条规则指定一个或多个目标文件,目标文件后面跟的是编译生成该目标文件所依赖的文件或模块,最后是生成或更新目标文件所用的命令。格式如下:

    其中[]中的内容是可选的。

    上面第1、2行构成一个规则~

    特别注意生成目标文件所用命令必须以Tab键开头(如果某一行以tab键开头,make就认为是命令)

    在依赖文件列表后面加一个;号可以跟命令,如下:

    11、12行是什么鬼?

    是伪目标!

    在makefile文件中,目标文件可以分为两类:实目标和伪目标。实目标文件是真正要生成的、以文件的形式存放在硬盘上的目标。伪目标不要求生成实际文件,而是为了让make执行一些辅助命令,如打印一些信息、删除无用中间文件等,这里的run是运行生成a程序,clear是清除所有生成文件~

    效果如下:

  • 相关阅读:
    NFS 规格严格
    Spring 规格严格
    如何做好软件功能测试 规格严格
    51CTO上不错的文章 规格严格
    一个好网站 规格严格
    系统小贴士 规格严格
    编译Zabbix 规格严格
    JS学习 规格严格
    杂项 规格严格
    MySQL 自增ID 规格严格
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/5081291.html
Copyright © 2020-2023  润新知