Android NDK Build:ld:错误:无法写入输出文件:权限被拒绝

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

提问人:Mneckoee 提问时间:10/23/2021 最后编辑:Peter MortensenMneckoee 更新时间:8/24/2023 访问量:1114

问:

我可以在 Windows 7 中构建我的项目,直到我将 NDK 版本更新到最新版本 (23.1.7779620)。

我将 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"
                }
            }
        }
    }
}
安卓 Android-NDK Android-Gradle 插件 APK Android-Build

评论

0赞 Mneckoee 10/24/2021
使用 NDK 版本 20.1.5948944 解决了错误!

答:

4赞 omahena 11/9/2021 #1

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

Enter image description here

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

最后一个似乎可以在 Windows 7 上运行的 NDK 是 22.1.7171670。

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

评论

0赞 Kad 5/4/2023
使用版本 NDK 25,也可以在 Windows 7 上运行