我在使用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: In function `main': /Users/darkh/Platinum-SRC-0-6-3_683/Platinum/Source/Tests/FileMediaServer/FileMediaServerTest.cpp:153: warning: warning: gets() is very unsafe; consider using fgets() Build/Targets/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o): In function `PLT_MediaItem::DynamicCast(void const*)': PltMediaItem.cpp:(.text._ZN13PLT_MediaItem11DynamicCastEPKv[PLT_MediaItem::DynamicCast(void const*)]+0x5c): undefined reference to `PLT_MediaItem::_class_PLT_MediaItem' Build/Targets/arm-android-linux/Debug/libPltMediaServer.a(PltMediaItem.o): In function `PLT_MediaContainer::DynamicCast(void const*)': PltMediaItem.cpp:(.text._ZN18PLT_MediaContainer11DynamicCastEPKv[PLT_MediaContainer::DynamicCast(void const*)]+0x5c): undefined reference to `PLT_MediaContainer::_class_PLT_MediaContainer' collect2: ld returned 1 exit status scons: *** [Build/Targets/arm-android-linux/Debug/FileMediaServerTest] Error 1
答案 0 :(得分: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/
中的目录。那应该编译很多 - 它在这里做了。