Makefile.am和makefile.in生成Makefile
很多時候,我們在網上下載的linux開源軟件都會遇到一個問題,就是源碼里面沒有直接的makefile,但是它有Makefile.am和makefile.in或者它有Makefile.am和configure.in,這里就不詳細解釋他們直接的關聯,直接給出如何操作生成makefile。
具體操作步驟如下:
1. 執行aclocal,產生aclocal.m4文件
aclocal是一個perl 腳本程序,它的定義是:
aclocal -create aclocal.m4 by scanning configure.ac
- 1
aclocal根據configure.in文件的內容,自動生成aclocal.m4文件。而aclocal.m4文件中,包含了生成configure文件所必須的宏。
2. 執行autoconf,生成configure文件
autoconf會根據configure.in和aclocal.m4文件,生成configure文件。
3. 執行automake命令,產生Makefile.in
automake --add-missing
- 1
automake會根據Makefile.am文件產生一些文件,包含最重要的Makefile.in。前面所生成的configure,會根據Makefile.in文件,來生成最終的Makefile文件。
4. 執行configure命令,生成Makefile文件
這樣,就產生了編譯所需要的Makefile文件。運行make,即可編譯。
./configure
- 1
如果我們有了
Makefile.am和makefile.in那就可以執行第四步了。
這里在進行第四步的時候很可能會遇到一個問題:
error: C++ preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details.
- 1
- 2
出現該情況是由於c++編譯器的相關package沒有安裝。
以Ubuntu為例,解決如下:
#sudo apt-get install build-essential
- 1
以RED HAT為例:
# yum install glibc-headers # yum install gcc-c++
- 1
- 2
這樣子有了makefile之后我們就可以愉快的make了!!
下載bsd0.06源碼找不到makefile
