Autotools源码外构建失败问题求助
问题排查与解决方案
你遇到的cd: src: No such file or directory错误,核心原因是你的configure.ac没有配置生成src/Makefile。当进行源码外构建时,configure需要知道要在build/src目录下生成对应的Makefile,但目前你的配置只指定了根目录的Makefile,导致make尝试进入build/src目录时发现它不存在。
具体修复步骤:
修改
configure.ac文件
在AC_CONFIG_FILES这一行中添加src/Makefile,修改后内容如下:AC_PREREQ(2.59) AC_INIT([testprog], [1.0], [myemail@example.com]) AC_CONFIG_AUX_DIR([config]) AM_INIT_AUTOMAKE([-Wall -Werror foreign]) AC_CONFIG_HEADERS([config.h]) AC_PROG_CC AC_CONFIG_FILES([Makefile src/Makefile]) # 新增src/Makefile配置 AC_OUTPUT重新生成配置文件
回到项目根目录(而非build目录),运行以下命令更新配置脚本:autoreconf -ivf这个命令会重新生成
configure脚本及相关依赖文件,确保新的配置规则生效。重新执行源码外构建
进入build目录,重新执行配置和构建流程:cd build ../configure make
问题原因详解:
你在根目录的Makefile.am中指定了SUBDIRS = src,Autotools会默认期望configure为每个子目录生成对应的Makefile。但如果configure.ac的AC_CONFIG_FILES列表中没有包含子目录的Makefile路径,configure就不会在build/src下生成该文件,也不会自动创建这个目录,最终导致make执行时找不到目标路径。
额外小提示:如果后续需要构建test等其他子目录,记得把对应的test/Makefile也添加到AC_CONFIG_FILES列表中。
内容的提问来源于stack exchange,提问作者user6467981
相关产品推荐
相关产品推荐

