Autoconf报错找不到install-sh等文件,该如何解决?
Autotools报错:找不到install-sh/install.sh/shtool的解决办法及文件说明
这些文件的作用
- install-sh/install.sh:是Autotools提供的跨平台安装脚本,用来替代系统自带的
install命令——不同Unix-like系统的install参数、行为可能有差异,这个脚本能保证在各种系统上一致完成文件复制、权限设置、目录创建等操作,是make install环节的核心依赖脚本。 - shtool:是一个Shell脚本工具集,包含一系列常用Shell函数,Autotools部分场景会用它处理文件、文本操作,但现在很多项目已经用
install-sh替代它了。
解决办法
方法1:用automake自动生成缺失文件
Autotools套件里的automake能自动补全这些辅助脚本,直接执行:
automake --add-missing
这个命令会扫描当前目录,把缺失的install-sh等文件从Autotools的系统模板目录复制过来。执行完再跑autoconf,就能正常完成配置脚本生成了。
方法2:手动复制install-sh
如果不想用automake,可以手动从系统目录复制install-sh。Xubuntu20.04里,这个文件一般在/usr/share/automake-1.16/(版本号可能略有不同,找不到的话可以用find /usr/share -name install-sh搜索),执行:
cp /usr/share/automake-1.16/install-sh .
复制完成后再运行autoconf即可。
方法3:检查configure.ac的宏定义
如果你的configure.ac里加了AC_PROG_INSTALL宏,就会触发对install-sh的检查。要是你的项目完全不需要make install功能,可以尝试注释掉这个宏,但不推荐——毕竟绝大多数项目都需要安装环节,保留这个宏更符合Autotools的标准流程。
内容的提问来源于stack exchange,提问作者4dummies
相关产品推荐
相关产品推荐

