【问题标题】:Can't run Makefile.am, what should I do?无法运行 Makefile.am,我该怎么办?
【发布时间】:2011-05-11 07:59:29
【问题描述】:

我有一个 C 项目要在 Linux 中编译和运行。这是一个非常大的项目,有许多子目录。在父目录中有文件Makefile.amMakefile.in

我尝试运行make -f Makefile.am,得到以下错误:

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

这是什么意思?如何完成我的任务?

【问题讨论】:

    标签: c++ linux makefile autotools


    【解决方案1】:

    这些文件与Autotools 套件一起使用。 Makefile.am 文件使用 automake 编译为 Makefile。

    查看目录中是否有configure 脚本。如果有,请输入:

    ./configure
    

    如果没有,则运行:

    autoreconf
    

    在目录中,该目录应创建 configure 脚​​本(您需要安装 Autotools 套件才能运行此脚本)。

    之后,您应该有一个可以运行的configure 脚本。

    配置完成后,目录下应该有一个正常的Makefile,就可以运行了

    make
    

    【讨论】:

    • 正如我所说,您需要安装 Autotools 套件才能运行该命令。看看这里:sourceware.org/autobook/autobook/autobook_274.html
    • 我安装了。现在它说它需要 configure.in 或 configure.ac
    • 好吧,似乎源代码的所有“开发人员”部分都不存在。您确定目录中没有configure 文件吗? (如果有但无法执行,您可以随时使用sh configure 运行它)
    • 另外,您可以尝试运行autoscan 来查看是否会为您创建一个可用的configure.in 文件。我的猜测是,您可能必须对其进行编辑才能使其可用。
    • autoreconf可以用sudo apt install autoconf安装
    【解决方案2】:

    遗漏的内容:

    • Makefile.am 使用 automake 转换为 Makefile.in。
    • Makefile.in 通过运行 configure 转换为 Makefile。

    这些 (Makefile.{am,in}) 都不应该与make -f 一起使用。

    如果 tarball 已经附带 configure,只需运行它并制作。如果没有,请运行 ./autogen.shbootstrap(*)。如果不存在,请改用autoreconf

    (*) autogen/bootstrap:开发人员添加的便利脚本应该只需调用autoreconf。不幸的是,有些人避免使用 autoreconf 并不必要地自己调用所有低级命令。

    【讨论】:

      【解决方案3】:

      补充已经说过的内容: 在项目目录中搜索名为 configure 的脚本。如果它在那里,构建项目将是:

      ./配置

      制作

      并且可选地,安装:

      sudo 安装

      或 su -c "make install"

      即使没有 configure 脚本。可能有一个 autogen.sh。运行此脚本以生成配置脚本并按上述方式进行操作。

      【讨论】:

        【解决方案4】:

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

        尝试:

        automake
        

        你也可以试试

        make -f Makefile.in
        

        因为这是运行automake的产物

        【讨论】:

        • configure.in 或 configure.ac 是必需的
        猜你喜欢
        • 2018-02-21
        • 1970-01-01
        • 1970-01-01
        • 2016-06-20
        • 1970-01-01
        • 1970-01-01
        • 2021-10-01
        • 1970-01-01
        • 2020-05-21
        相关资源
        最近更新 更多