我的Android进阶之旅解决Android Studio 编译NDK项目出错:clang++: error: no such file or directory
Posted 字节卷动
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Android进阶之旅解决Android Studio 编译NDK项目出错:clang++: error: no such file or directory相关的知识,希望对你有一定的参考价值。
一、错误描述
在编写一个NDK项目的时候,出现编译错误,如下所示:
vlog.basic-opengl | debug | armeabi-v7a Compiler exited with error code 1:
C:\\android\\SDK\\ndk\\20.0.5594570\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe -xc++ --target=armv7-none-linux-androideabi19 --gcc-
toolchain=C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64
--sysroot=C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/sysroot
-DXtcOpenGL_EXPORTS -ID:/GitLab Source/Vlog_2022/basic-opengl/src/main/cpp/jni
-g -DANDROID -fdata-sections -ffunction-sections -funwind-tables
-fstack-protector-strong -no-canonical-prefixes -fno-addrsig
-march=armv7-a -mthumb -Wa,--noexecstack -Wformat -std=c++11
-O0 -fno-limit-debug-info -fPIC -fpch-preprocess -v -dD -E Android (5220042 based on r346389c)
clang version 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm
3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd) (based on LLVM 8.0.7svn)
Target: armv7-none-linux-android19 Thread model: posix InstalledDir:
C:\\Android\\SDK\\ndk\\20.0.5594570\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin Found candidate GCC installation: C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi\\4.9.x Selected GCC installation:
C:/Android/SDK/ndk/20.0.5594570/toolchains/llvm/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x Candidate multilib: thumb;
@mthumb Candidate multilib: armv7-a;
@march=armv7-a Candidate multilib: armv7-a/thumb;
@march=armv7-a@mthumb Candidate multilib: .;
Selected multilib: armv7-a/thumb;@march=armv7-a@mthumb clang++: error: no such file or directory: 'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'
然后所有的C++代码全部爆红,如下所示:
二、分析错误
2.1 错误信息
找到最后一行,报错信息如下:
Selected multilib: armv7-a/thumb;@march=armv7-a@mthumb clang++:
error: no such file or directory: 'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'
提示找不到'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'
目录。
2.2 分析CmakeLists.txt
在CmakeLists.txt,我添加了include_directories
配置,指定了几个目录,如下所示:
#incLude
include_directories(
jni
render
sample
sample/filter
utils
)
看起来是没有任何问题的。应该不是代码的问题,继续分析!
2.3 分析项目路径
项目路径为:D:\\GitLab Source\\Vlog_2022
报错的目录为:D:\\GitLab Source\\Vlog_2022\\basic-opengl\\src\\main\\cpp\\jni
2.4 分析差异
- 提示找不到目录地址为:
'Source/Vlog_2022/basic-opengl/src/main/cpp/jni'
- 报错实际的目录地址为:
D:\\GitLab Source\\Vlog_2022\\basic-opengl\\src\\main\\cpp\\jni
尼玛,这是什么鬼!!!
2.5 移动项目
看起来是Android Studio中的CMake出现了问题,导致路径识别出错。
我们将项目迁移到一个新的没有空格的路径下,试一试
- 原来项目路径为:
D:\\GitLab Source\\Vlog_2022
- 迁移后项目路径为:
D:\\GitLab\\Vlog_2022
没有空格了!!!
没有空格了!!!
没有空格了!!!
重要的事情说三遍!
然后重新编译,编译正常,如下所示:
代码正常:
编译正常:
尼玛,真的是天坑!!!
2.6 题外话
但是这个问题在我另外一个项目,是不存在这样的bug。
算了,暂时分析不出为啥新项目会抽风,暂时把新项目迁移到没有空格的目录下!
三、总结
在Window环境下,最好目录别带空格,否则会出现诡异的问题,排查很久!!!!!!
以上是关于我的Android进阶之旅解决Android Studio 编译NDK项目出错:clang++: error: no such file or directory的主要内容,如果未能解决你的问题,请参考以下文章
我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题
我的OpenGL学习进阶之旅解决Android OpenGL ES 调试工具 GAPID 无法识别Android设备的问题
我的Android进阶之旅解决Android项目编译报错: Program type already present : com.xxx.xxxx.BuildConfig
我的Android进阶之旅------>android Button上面的英文字符串自己主动大写的问题解决
我的Android进阶之旅解决Android Studio编译报错:Failed to find Build Tools revision 30.0.2
我的Android进阶之旅------>Android编译错误java.util.zip.ZipException: duplicate entry的解决方法