2010-11-17 66 views
15

我有一個C項目可以在Linux中編譯和運行。這是一個包含許多子目錄的非常大的項目。在父目錄內有文件Makefile.amMakefile.in無法運行Makefile.am,我應該怎麼做?

我試圖運行make -f Makefile.am,並得到了以下錯誤:

make: Nothing to be done for `Makefile.am'. 

是什麼意思?我如何完成我的任務?

回答

1

Makefile.am可能與automake一起使用。

嘗試:

automake 
你也可能只是想嘗試

make -f Makefile.in 

由於這

是運行automake的

+0

需要configure.in或configure.ac – sara 2010-11-17 10:30:12

3

爲了補充什麼已經說過的產品: 搜索一個名爲的腳本在項目目錄中配置。如果它是存在的,建設項目將是:

的./configure

使

和可選安裝:

須藤使安裝

或蘇-c「使安裝「

即使沒有配置腳本。可能有一個autogen.sh。運行此腳本以生成配置腳本並按上述操作。

18

這些文件與Autotools套件一起使用。使用automake將Makefile.am文件編譯爲Makefiles。

看看目錄中是否有configure腳本。如果有,然後鍵入:

./configure 

如果沒有,然後運行:

autoreconf 
目錄

,應創建configure腳本(你需要安裝運行此自動工具套件)。

之後,你應該有一個configure腳本,你可以運行。

後的配置完成後,您應在目錄中有一個正常的Makefile,並能夠運行

make 
+0

autoreconf:找不到命令 – sara 2010-11-17 10:13:53

+2

正如我所說的,您需要安裝Autotools套件才能運行該命令。看看這裏:http://sourceware.org/autobook/autobook/autobook_274.html我安裝了 – 2010-11-17 10:15:59

+0

。現在它說它需要configure.in或configure.ac – sara 2010-11-17 10:29:24

4

什麼被忽略了:

  • Makefile.am轉化Makefile.in使用automake。
  • 通過運行configure將Makefile.in轉換爲Makefile。

這些(Makefile。{am,in})都不應該與make -f一起使用。

如果tarball已經配置了configure,就運行它並make。如果沒有,請運行./autogen.shbootstrap(*)。如果不存在,請改爲使用autoreconf

(*)autogen/bootstrap:開發人員添加的便利腳本,應該只需撥打autoreconf。不幸的是,有些人會避免autoreconf,並且不必要地自己調用所有低級命令。