2010-11-17 32 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,并且不必要地自己调用所有低级命令。