0

我无法构建 helloWorld 示例以获取 .so 以在 Eclipse 中运行它。我已成功导入项目并根据需要将变量更改为我的根路径。这是我的 build_native.sh。我正在粘贴我在该文件中所做的唯一更改

NDK_ROOT_LOCAL=/cygdrive/e/android-ndk-r8
COCOS2DX_ROOT_LOCAL=/cygdrive/e/cocos2d

我的 NDK 工作正常,因为我已经成功执行了 NDK 的 HelloWorld 示例。我的 SDK 版本是 20,NDK 版本是 8,我使用高于 1.7 的 cygwin。我已经在我的 NDK 目录上执行了 chown。但是当我在 cocos2d 的 HelloWorld 示例程序中运行命令 ./build_native.sh 时,我得到了这个错误

E:/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-          linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/png.a: No such file: Permission denied
collect2: ld returned 1 exit status

当我在我的 NDK 目录窗口中搜索 png.a 时,找不到该文件。我很困惑是权限错误还是文件不存在。但是我有最新的 NDK 如果文件不存在怎么会有人能够运行 cocos2d-x ???需要帮忙!!!

4

1 回答 1

0

当我也尝试过时,似乎缺少对构建文件的权限。

$ ls -l obj/local/armeabi/png.a
---------- 1 someuser Domain Users 912618 Jul 12 18:23 obj/local/armeabi/png.a

论坛上有一个链接建议现在似乎无法访问。

无论如何,要修复,您可以设置文件的权限。

$ cd obj/local/armeabi/
$ chmod 664 *.a
$ cd ../../..

编辑:更好的解决方法可能是将 /etc/fstab 中的默认权限设置为

none /cygdrive cygdrive binary,noacl,posix=0,user 0 0

在此之后,您应该能够运行./build_native.sh.

您可以使用一个命令来定位当前目录下没有(读/写)权限的所有文件find . -type f -perm 0

请参阅此答案以设置工作目录下所有文件的写入权限。

如果您不熟悉它们,请考虑阅读有关chmod的教程以了解 linux/unix 中的权限概念。

于 2012-07-12T13:38:15.883 回答