3

我安装了 Android sdk 版本和 Andorid ndk 。使用 Android SDK 和 AVD Manager,我安装了 SDK Plaform Android 2.2、API8、rev3 和 1.6、API4、revsion3

当我尝试 rake run:android 我收到错误消息

D:/Android_ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-android
eabi/4.4.3/../../../../arm-linux-androideabi/bin/ld.exe: crtbegin_so.o: No such file: No such file or directory
collect2: ld returned 1 exit status 

任何建议都会有所帮助

4

3 回答 3

10

NDK 的 6b 版本似乎存在错误。回退到版本 6(Mac 版本在这里http://dl.google.com/android/ndk/android-ndk-r6-darwin-x86.tar.bz2,Windows 和 Linux 将类似)。解压它,把它放在某个地方,然后运行 ​​rhodes-setup 实用程序并告诉它新的 NDK 在哪里——你应该很高兴。

于 2011-09-13T20:30:18.063 回答
2

该问题也出现在 NDK r7c(linux) 上。

发现工具链忽略了平台位置($NDK_ROOT/platforms/android-8/arch-arm/usr/lib/),在工具链路径中搜索,不正确。

但是,由于工具链也在当前目录中搜索文件,因此一种解决方案是将正确的平台 crtbegin_so.o 和 crtend_so.o 链接到源目录中:

cd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtbegin_so.a

cd src && ln -s NDK_ROOT/platforms/android-8/arch-arm/usr/lib/crtend_so.a

注 1:此答案并非特定于 rhodes

注意 2:这假设代码是为 API8 (Android 2.2) 编译的。请根据您的要求更改正确平台的路径。

注 3:配置使用的标志:

./configure \
--host=arm-linux-androideabi \
CC=arm-linux-androideabi-gcc \
CPPFLAGS="-I$NDK_ROOT/platforms/android-8/arch-arm/usr/include/" \
CFLAGS="-nostdlib" \
LDFLAGS="-Wl,-rpath-link=$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/ -L$NDK_ROOT/platforms/android-8/arch-arm/usr/lib/" \
LIBS="-lc"
于 2012-04-24T09:10:52.240 回答
0

不确定我是否为您指明了正确的方向,但您的 Rhodes 应用程序似乎正在寻找 SDK 和 AVD 之类的文件,但找不到它们。

首先,确保项目中的 build.yml 指向您的 Rhodes 文件夹。默认情况下,sample-api 没有正确设置此设置。

此外,在 Rhodes 文件夹中,确保 rhobuild.yml 具有您的 SDK 和 AVD 的正确位置。该文件夹中还有一个示例,向您展示了它的外观。

如果这没有帮助,我建议您显示更多导致此错误的跟踪。欢迎提供更多信息,因为您提供的内容并不多。

于 2011-09-13T14:59:03.393 回答