1

我在 MacOSX 10.6.5 上使用 Android NDK 构建 Platinum UPnP 堆栈时遇到问题。

我已经从这里下载了最新版本的 Android NDK for Mac ,安装了 SCons(用于构建)并从他们的网站下载了最新版本的 Platinum。

比我将 ANDROID_NDK_HOME 设置到我的 NDK 根目录并尝试构建:
scons -Q target=arm-android-linux并且我收到以下错误:

(...) 例外:ANDROID NDK 未配置,使用 host-setup.sh 配置它:(...)

问题是根据文档,该文件已从 Android NDK 中删除:

以前的版本要求您运行“build/host-setup.sh”脚本来配置 NDK。但是,此步骤已在版本 4 中删除。

现在我有点卡住了,不知道如何解决这个问题。

更新:

我已经下载了 NDK r3(最后一个缺少文件)并使用 host-setup.sh 对其进行了配置

但是当我尝试构建目标时,它会运行一段时间然后崩溃:

Build/Targets/arm-android-linux/Debug/Source/Tests/FileMediaServer/FileMediaServerTest.o:在函数“main”中:
/Users/darkh/Platinum-SRC-0-6-3_683/Platinum/Source/Tests/FileMediaServer/FileMediaServerTest.cpp:153:警告:警告:gets() 非常不安全;考虑使用 fgets()

构建/目标/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o):在函数“PLT_MediaItem::DynamicCast(void const*)”中:
PltMediaItem.cpp:(.text._ZN13PLT_MediaItem11DynamicCastEPKv[PLT_MediaItem::DynamicCast(void const*)]+0x5c):未定义对“PLT_MediaItem::_class_PLT_MediaItem”的引用

构建/目标/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o):在函数“PLT_MediaContainer::DynamicCast(void const*)”中:
PltMediaItem.cpp:(.text._ZN18PLT_MediaContainer11DynamicCastEPKv[PLT_MediaContainer::DynamicCast(void const*)]+0x5c): 未定义对 `PLT_MediaContainer::_class_PLT_MediaContainer' 的引用
collect2: ld 返回 1 个退出状态

scons: *** [Build/Targets/arm-android-linux/Debug/FileMediaServerTest] 错误 1
4

1 回答 1

1

除了 host-setup.sh 问题之外,Platinum 似乎使用了自己的基于 SCons 的构建系统,该系统依赖于包含 arm-eabi-4.4.0 的编译器的路径。这在最新的 Android NDK 中也发生了变化。

您要么必须自己破解构建系统,要么等待他们为 r5 更新它。开始查找的一个好地方是 file Build/Targets/arm-android-linux/Config.scons,但是您必须进行很多不明显的更改才能启动并运行它。

编辑:

尝试使用 r4b。创建一个文件,android-ndk-r4b/out/host/config.mk其内容为:

HOST_TAG := linux-x86

.. 或 Mac 上的等价物 - 无论android-ndk-r4b/build/prebuilt/调用什么目录。那应该编译很多 - 它在这里完成。

于 2010-12-07T16:42:02.417 回答