【问题标题】:How to build Platinum UPnP stack with Android NDK?如何使用 Android NDK 构建 Platinum UPnP 堆栈?
【发布时间】:2010-12-07 14:29:35
【问题描述】:

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

我已经从 here 下载了最新版本的 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

【问题讨论】:

    标签: java android-ndk scons upnp


    【解决方案1】:

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

    您要么必须自己破解构建系统,要么等待他们为 r5 更新它。文件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/ 中的目录。这应该可以编译很多 - 它在这里完成了。

    【讨论】:

    • 我已经下载了 NDK r3(最后一个带有 host-setup.sh 的)并进行了配置。我能够让它运行,但过了一段时间我得到了一个错误。
    • 我已经手动编辑了 Config.scons 并将带有主机标签的行设为静态。我已经设法用 r4b 编译了一下,但又得到了我在主帖中提到的错误。 Build/Targets/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o):在函数PLT_MediaItem::DynamicCast(void const*)': /Users/darkh/Platinum-SRC-0-6-3_683/Platinum/Source/Devices/MediaServer/PltMediaItem.h:244: undefined reference to PLT_MediaItem::_class_PLT_MediaItem'
    • @darkhie - uf,那么不知道。也许是一个“scons -c”来清除以前的构建杂物?如果做不到这一点,我认为白金邮件列表将是你最好的选择:-(
    • 我已经联系了创建者,他发布了一个新版本的 Platinum 修复了构建错误:) 随着 Config.scons(主机标签的东西)和 NDK r4b 的变化,我能够成功构建:)
    猜你喜欢
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    相关资源
    最近更新 更多