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