Makefile.am 和 makefile.in 生成 Makefile
Makefile.am和makefile.in生成Makefile
很多时候,我们在网上下载的linux开源软件都会遇到一个问题,就是源码里面没有直接的makefile,但是它有Makefile.am和makefile.in或者它有Makefile.am和configure.in,这里就不详细解释他们直接的关联,直接给出如何操作生成makefile。
具体操作步骤如下:
1. 执行aclocal,产生aclocal.m4文件
aclocal是一个perl 脚本程序,它的定义是:
1 | aclocal -create aclocal.m4 by scanning configure.ac |
aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。而aclocal.m4文件中,包含了生成configure文件所必须的宏。
2. 执行autoconf,生成configure文件
autoconf会根据configure.in和aclocal.m4文件,生成configure文件。
3. 执行automake命令,产生Makefile.in
1 | automake --add-missing |
automake会根据Makefile.am文件产生一些文件,包含最重要的Makefile.in。前面所生成的configure,会根据Makefile.in文件,来生成最终的Makefile文件。
4. 执行configure命令,生成Makefile文件
这样,就产生了编译所需要的Makefile文件。运行make,即可编译。
1 | ./configure |
如果我们有了
Makefile.am和makefile.in那就可以执行第四步了。
这里在进行第四步的时候很可能会遇到一个问题:
1 | error: C++ preprocessor "/lib/cpp" fails sanity check |
出现该情况是由于c++编译器的相关package没有安装。
以Ubuntu为例,解决如下:
1 | #sudo apt-get install build-essential |
以RED HAT为例:
1 | # yum install glibc-headers |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 YuKiFuHaNeの博客!




