You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置autoreconf读取CRLF格式configure.ac时自动转为LF?

Autotools autoreconf处理CRLF换行符输入的解决方案

autoreconf本身没有内置的命令行参数,也没有对应的AC_*系列m4宏可以实现读取输入文件时自动将CRLF转换为LF的功能。

Autotools工具链原生基于类Unix环境设计,默认仅适配LF作为换行符,不会主动处理输入文件中的CRLF字符。出现的configure执行报错、换行符混杂的问题,本质是输入的configure.ac等文件携带CRLF换行符,autoreconf处理时未做统一转换,导致生成的脚本中同时存在两种换行符,shell解析时出现截断问题,才会输出含义模糊的报错:

.in'ig.status: error: cannot find input file: `

以下是两种可行的解决方式:

  • 从Git检出根源解决换行符问题
    可以在项目根目录新增.gitattributes文件,指定所有Autotools相关文件强制使用LF换行符,适配跨平台检出场景,配置示例:
    *.ac text eol=lf
    *.am text eol=lf
    configure text eol=lf
    Makefile.in text eol=lf
    
    如果仅本地临时调整,也可以在检出项目前执行git config core.autocrlf input,该配置会让Git检出文件时保留LF换行符,提交时自动将CRLF转换为LF,适配Windows下MSys环境的使用需求。
  • 本地已检出文件的快速转换方案
    如果已经拿到带CRLF换行符的项目文件,可以在执行autoreconf前用dos2unix工具批量转换换行符:
    find . -name "*.ac" -o -name "*.am" | xargs dos2unix
    
    转换完成后再执行autoreconf,生成的configure脚本就会统一使用LF换行符,不会再出现执行报错的问题。

内容的提问来源于stack exchange,提问作者Андрей Щеглов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:15:03