出现arm-linux-Androideabi-g++.exe: XX/XX.os: No such file or directory 的解决方法
在编译网狐荣耀版、精华版、旗舰版等项目的安卓客户端时,有时会在执行 NDK 编译的过程中报出如下错误:
arm-linux-androideabi-g++.exe:XX/XX.os: No such file or directory
这类错误通常出现在以下阶段:
- 使用
ndk-build
构建 native 层模块; - 使用命令行批量构建(如
ndk-build -j4
); - Android Studio 集成构建期间。
**错误原因其实非常简单:**路径太深,文件系统找不到或 windows 长路径限制导致某些 .os
临时文件写入失败。
出错原因说明
Windows 默认对路径长度有限制,最长 260 字符(MAX_PATH),当你的项目放在了如:
D:\workspace\project\dev\cbk\frameworks\runtime-src\proj.android\jni\helloworld\Classes\src\lua\...
这样的路径下时,一旦编译器在这个基础上继续拼接 .os
、.obj
、.so
等目标文件的输出路径,就很容易超长,最后导致无法创建中间文件,从而报:
No such file or directory
解决方法
把整个项目目录移动到磁盘根目录下。
比如你可以这样操作:
原来路径(太深):
D:\workspace\网狐荣耀完整版2023_最终版含打包工具\
建议移动到:
D:\cbk\
或干脆移动到:
C:\game\
这样路径就会被大幅缩短,不再触发 Windows 的路径长度限制,编译器也能顺利生成中间文件。
建议
- 编译时不要在中文路径下操作,比如桌面、文档、下载目录,这些路径有可能包含中文用户目录,容易引发额外问题。
- 不要在虚拟盘、网盘、同步盘等文件系统下编译,可能会引起临时文件读写失败。
- 如果你必须保留原始路径结构,可以尝试在
Windows 组策略
中开启长路径支持(仅适用于 Windows 10 以上系统),不过不推荐初学者操作。
这类 “No such file or directory” 报错看似文件缺失,其实根本原因多半是路径太深、命名太长。把项目搬到 C 盘根目录,通常就能立马解决。
仅限技术交流,禁止商用!