无论您是与 Ubuntu, Debian 或 Red Hat,您可能会看到一条错误消息:*** 未指定目标且未找到生成文件。 逮捕。 由于这是与 GNU Make 整体相关的普遍问题,您可能会在无数 Unix 实现中看到它。 这意味着您当前的工作目录中没有名为 makefile 或 Makefile 的文件。 幸运的是,这是一个很容易纠正的错误。
方法一:在当前目录下找一个makefile
您可能想尝试运行 做 在当前目录下再执行一次命令,看看是否出现同样的错误。 如果您打开了一个新的终端窗口并且已经尝试找到正确的目录或者自上次尝试运行 GNU make 后使用了 cd 命令,这一点尤其重要。
假设是这样,请尝试运行 ls o 目录 命令查看当前目录中有哪些文件。 它可能不在目录树的正确部分。 如果您注意到您看到属于您的根 / 目录或您的主目录 ~ 目录的目录,那么您将想要 cd 到正确的位置以运行 make 命令。
您可能会发现自己离预期的位置更远。 在我们的 example,我们尝试从 /var/crash 目录运行 make,发现它根本不起作用。 它不能从这里运行,因为这个特定位置的唯一文件来自不相关的错误报告。
最有可能的是,您想从您的主目录中某处的目录运行您的 make 命令。 例如,如果您从源代码构建最新版本的 GNU nano,那么您可能有一个位于 ~/nano-2.9.6 的目录,您可以使用 CD 访问该目录,然后再次运行 make。 你可能想尝试跑步 ls 在尝试确保目录中有一个可以构建的 makefile 之前再试一次。
请注意,您需要先配置安装。 configure 命令为 GNU 编译器的蓬勃发展创造了完美的环境。 如果即使在正确的项目目录中也找不到 makefile,请运行 。/建立 当你还在里面的时候,接着是 做 领域。 如果编译正确,你可以安装你的项目 sudo 安装但请记住,您不想以 root 身份构建任何东西,所以您永远不想运行 sudo 做或安装之外的任何其他事情。
方法二:指定自定义Makefile
假设问题已解决,您无需执行任何其他操作。 但是,如果上述方法未能解决您的问题,则有两个特殊用例需要考虑。 两者都涉及为您手动配置的项目编写您自己的 makefile。
您可以使用 -f 选项指定一个自定义 makefile,它被称为不同于文字 makefile 的名称。 例如,如果您有一个名为 makefile.bak 的备份 makefile,您可以通过运行来指定它 hacer -f makefile.bak 从命令行。 您可以用任何文件名替换 makefile.bak,如果您想在编译器运行时忽略自定义或陈旧的 makefile 中的错误,则可以包括 -i 选项。 通常不推荐这样做,因为如果 makefile 有问题,您可能需要编辑它。
另一个密切相关的用例涉及区分大小写是一个问题的情况。 以下是 Unix 处理方式中的所有单独文件:
- 生成文件
- 生成文件
- 创建文件
- 创建文件
- 生成文件E
自定义配置的程序可能无法识别具有奇怪大小写的 makefile。 如果您是为正在处理的编码项目手工编写的,那么您可能希望将其重命名为 makefile,尽管您可以使用 -i 选项来确保 GNU make 能够找到它。 请记住,如果您已正确编写所有内容,您仍然可以从您自己的项目运行 ./configure 以强制其构建正确的环境并避免此问题开始。
接下来阅读
- GPU AMD Radeon RX 6000 RDNA 计算单元数、提升时钟和功率……
- 新的 Fallout 4 模组增加了数十种投掷武器和目标
- 如何修复“找不到指定的模块” Windows 11?
- 修复:“找不到指定的程序” Windows