GNAT Studio 2021社区版修改代码后编译报错compilation unit expected咨询
错误根因
报错main.adb:1:01: error: compilation unit expected明确指向源文件第一行首字符位置存在编译器无法识别的隐藏内容,90%以上的场景为UTF-8字节顺序标记(BOM)导致,其余场景为同步文件冲突、配置异常。
解决方案
- 修正源文件编码
使用支持编码查看的文本编辑器(如Notepad++、VS Code)打开修改后的Main.adb,检查右下角编码标识:
若编码为「UTF-8 BOM」,将编码切换为普通UTF-8(无BOM)后重新保存,再次编译即可正常通过。
若使用GNAT Studio内置编辑器修改仍出现该问题,可在编辑器设置中将默认保存编码调整为UTF-8无BOM。 - 排查同步目录干扰
项目存储在OneDrive同步目录下时,实时同步机制可能锁定源文件、或在同步过程中篡改文件头信息。可将整个项目文件夹移动到本地非同步目录(例如C:\AdaProjects\)下,再进行修改编译测试。 - 校验项目与文件配置
- 确认源文件名为
Main.adb,与代码中定义的procedure Main大小写完全匹配,GNAT对单元名与文件名的匹配校验区分大小写。 - 打开项目根目录下的
.gpr工程文件,确认Main属性正确指向Main程序,Source_Dirs配置包含源文件所在的src目录,无多余无效文件引用。
- 确认源文件名为
- 重置IDE配置
若以上操作均无效,关闭GNAT Studio,删除用户目录下的.gnatstudio配置文件夹(默认路径为C:\Users\你的用户名\.gnatstudio),重启软件后重新创建项目测试即可。
该问题属于环境配置类问题,并非GNAT编译器本身的已知缺陷。
内容的提问来源于stack exchange,提问作者Ada Lovelace
相关产品推荐
相关产品推荐

