生成makefile实战例子

我的总结:


makefile生成过程:4个步骤,层层依赖,每一个步骤都依赖于上一个步骤的结果。
aclocal.m4文件→→→configure文件→→→为源文件编写makefie.am→→→Makefile.in→→→Makefile文件


简化生成makefile的过程:只需要4步:

  1. 执行aclocal,产生aclocal.m4文件
    aclocal是一个perl 脚本程序,它的定义是:

    aclocal -create aclocal.m4 by scanning configure.ac

aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。而aclocal.m4文件中,包含了生成configure文件所必须的宏。

  1. 执行autoconf,生成configure文件
    autoconf会根据configure.in和aclocal.m4文件,生成configure文件。

  2. 执行automake命令,产生Makefile.in
    automake --add-missing

automake会根据Makefile.am文件产生一些文件,包含最重要的Makefile.in。前面所生成的configure,会根据Makefile.in文件,来生成最终的Makefile文件。

  1. 执行configure命令,生成Makefile文件
    这样,就产生了编译所需要的Makefile文件。运行make,即可编译。

makefile生成过程:aclocal.m4文件→→→configure文件→→→为源文件编写makefie.am→→→Makefile.in→→→Makefile文件


这个只是针对文件,并不是代码,重点看文件的操作。

主要还是能够看懂makefile。

每个目录下都有 makefile.inmakefie.am

自动生成makefile例子
  这个例子共有三个C文件,main.c,add/add.c和sub/sub.c。源代码如下:

/main.c/

#include

int main(void)

{

printf("%d\n",add(sub(100,5),1));

return 0;

}

/* add/add.c */

int add(int x,int y)

{

return x+y;

}

/* sub/sub.c */

int sub(int x,int y)

{

return x-y;

}

Q:自动生成makefile需要手动输入什么文件,作用是什么?

按照makefile生成的流程执行,需要手动输入的文件只有两类configure.in和makefile.am

操作在包含源文件的项目目录下进行。  
 (1). 运行autoscan,生成文件configure.scan。   
 (2). 修改configure.scan,改名为configure.in。  
 (3).运行autoheader,生成文件configure.h.in现在一般改为configure.ac)。configure.in里有宏AC_CONFIG_HEADER()时用。   
 (4).运行libtoolize,生成一些支持文件,ltmain.sh。需要用libtool生成共享库用。   
 (5).运行allocal,生成aclocal.m4。   
 (6). 运行autoconf,生成configure。   
 (7).为源文件编写makefie.am,每一个包含源文件的目录和子目录都有一个makefile.am。   
 (8).运行automake,生成makefile.in每个包含makefile.am的子目录都生成makefile.in。   automake -a选项可以补齐文件config.guess,config.sub,install-sh,missing,depcomp。   
 (9).运行./configure,生成config.status,config.h,makefile。   
 (10).运行make,生成中间文件对象文件,库文件,最后生成可执行文件。

怎么样 最快地学会配置生成makefile,直接上hello world

1、建目录
  在你的工作目录下建一个helloworld目录,我们用它来存放helloworld程序及相关文件,如在/home/my/build下:
  $ mkdir helloword
  $ cd helloworld
  2、 helloworld.c
  然后用你自己最喜欢的编辑器写一个hellowrold.c文件,如命令:vi helloworld.c。使用下面的代码作为helloworld.c的内容。
  int main(int argc, char** argv)
  {
  printf(“Hello, Linux World!\n”);
  return 0;
  }
  完成后保存退出。
  现在在helloworld目录下就应该有一个你自己写的helloworld.c了。
  3、生成configure

猜你喜欢

转载自blog.csdn.net/qq_41624617/article/details/90575297
今日推荐