Android NDK Build: ld: error: failed to write to the output file: Permission denied

Posted

技术标签:

【中文标题】Android NDK Build: ld: error: failed to write to the output file: Permission denied【英文标题】: 【发布时间】:2021-12-09 14:02:00 【问题描述】:

在将 NDK 版本更新到最新版本 (23.1.7779620) 之前,我可以在 Windows 7 中构建我的项目。 我将 NDK 文件放在我的 android SDK 文件夹旁边:

local.properties
sdk.dir=F\:\\Programming\\AndroidSdk
ndk.dir=F\:\\Programming\\AndroidNdk\\ndk-r23b

现在当我想构建 APK 时,我收到了这个错误:

> Task :app:externalNativeBuildDebug FAILED
Build gdx-audio_armeabi-v7a
[armeabi-v7a] SharedLibrary  : libgdx-audio.so
ld: error: failed to write to the output file: Permission denied
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [F:/Programming/AndroidNdk/ndk-r23b/build//../build/core/build-binary.mk:715: F:/Projects/Android/myProject/app/build/intermediates/ndkBuild/debug/obj/local/armeabi-v7a/libgdx-audio.so] Error 1

ld: error: failed to write to the output file: Permission denied

我的应用build.gradle:

android 
    ...
    ndkVersion "23.1.7779620"
    externalNativeBuild 
        ndkBuild 
            path "jni/Android.mk"
        
    


    defaultConfig 
        ...
        externalNativeBuild 
            ndkBuild 
                arguments "NDK_APPLICATION_MK:=jni/Application.mk", "APP_PLATFORM:=android-16", "-j8"
                abiFilters "armeabi-v7a", "arm64-v8a"
            
        
    

【问题讨论】:

使用 NDK 版本 20.1.5948944 解决了错误! 【参考方案1】:

你是对的。 ProcessMonitor 似乎表明在 NDK 版本 23.1.7779620 中,ld.exe 正在使用 Win7 不支持的更新 API 调用。

看起来 ld 错误地将失败的 API 调用解释为“权限被拒绝”错误。在 NDK 版本 23.0.7599858 中也会发生同样的情况。

似乎在 Win7 上工作的最后一个 NDK 是 22.1.7171670。

系统升级到Win10后,23.x NDK版本ld开始正常工作。

【讨论】:

以上是关于Android NDK Build: ld: error: failed to write to the output file: Permission denied的主要内容,如果未能解决你的问题,请参考以下文章

总结jenkins Android打包遇到的坑

Android NDK - 构建 TessTwo(Android 的 Tesseract 工具的分支) - ndk-build 失败

Android NDK“ndk-build”被识别为内部或外部命令批处理文件

NDK笔记-在Android Studio中使用ndk-build

Android NDK,错误:(165, 0) 原因:找不到 ndk-build 二进制文件

NDK笔记-在Android Studio中使用ndk-build(转)