先放下我自己编译成功本机的环境:
windows 10下的自带的linux子系统
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
NDK= android-ndk-r10d
ANDROID_TOOLCHAIN = 'arm-linux-androideabi-4.9'
错误1:
Exception: ANDROID_NDK_ROOT environment variable not set:
详情如图:
scons: Reading SConscript files ...
********** Configuring Build Target = arm-android-linux / Release ********
Exception: ANDROID_NDK_ROOT environment variable not set:
File "/mnt/f/proj/thirddemo/Platinum/SConstruct", line 1:
SConscript('Build/Boot.scons')
File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
return method(*args, **kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
return _SConscript(self.fs, *files, **subst_kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
call_stack[-1].globals)
File "/mnt/f/proj/thirddemo/Platinum/Build/Boot.scons", line 71:
SConscript('Build.scons', variant_dir='Targets/'+env['target']+'/'+build_config, exports='env', duplicate=0)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 614:
return method(*args, **kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 551:
return _SConscript(self.fs, *files, **subst_kw)
File "/usr/lib/scons/SCons/Script/SConscript.py", line 256:
call_stack[-1].globals)
File "/mnt/f/proj/thirddemo/Platinum/Build/Build.scons", line 166:
execfile(target_config_file)
File "/mnt/f/proj/thirddemo/Platinum/Build/Targets/arm-android-linux/Config.scons", line 15:
raise Exception('ANDROID_NDK_ROOT environment variable not set')
这个错误比较简单,直接从错误信息能够判断出是环境变量没有设置,直接执行:
export ANDROID_NDK_ROOT=/mnt/f/android_ndk/android-ndk-r10d
地址是自己本机实际的ndk路径
错误2:
sh: 1: arm-linux-androideabi-g++: not found
scons: Reading SConscript files ...
********** Configuring Build Target = arm-android-linux / Release ********
Building for Android:
ANDROID_HOST_SYSTEM = linux-x86
ANDROID_TOOLCHAIN = arm-linux-androideabi-4.4.3
ANDROID_PLATFORM = android-9
ANDROID_ARCH = arm
scons: done reading SConscript files.
scons: Building targets ...
arm-linux-androideabi-g++ -o Build/Targets/arm-android-linux/Release/Source/Tests/FileMediaServer/FileMediaServerTest.o -c -fno-exceptions -fno-rtti -Wall -D_REENTRANT -O3 -I/mnt/f/android_ndk/android-ndk-r14b/sources/cxx-stl/system/include --sysroot /mnt/f/android_ndk/android-ndk-r14b/platforms/android-9/arch-arm -msoft-float -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D_REENTRANT -DNDEBUG -DNPT_CONFIG_ENABLE_LOGGING -DPLATINUM_UPNP_SPECS_STRICT -DANDROID -DNPT_CONFIG_HAVE_SYSTEM_LOG_CONFIG -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -ISource/Devices/MediaServer -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -ISource/Devices/MediaServer -ISource/Devices/MediaRenderer -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -ISource/Devices/MediaServer -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -IThirdParty/Neptune/Source/Core -IThirdParty/Neptune/Source/Data/TLS -ISource/Core -ISource/Extras -ISource/Platinum -ISource/Devices/MediaServer -ISource/Devices/MediaRenderer -ISource/Devices/MediaConnect Source/Tests/FileMediaServer/FileMediaServerTest.cpp
sh: 1: arm-linux-androideabi-g++: not found
scons: *** [Build/Targets/arm-android-linux/Release/Source/Tests/FileMediaServer/FileMediaServerTest.o] Error 127
什么?编译工具竟然找不到,找了一些参考资料发现是机器架构的指定问题,修改Build/Targets/arm-android-linux/Config.scons即可,‘-’号和‘+’号是我本地的git修改记录
PLATFORM_TO_TARGET_MAP = {
- 'linux-i386' : 'linux-x86',
- 'linux2' : 'linux-x86',
+ 'linux-i386' : 'linux-x86_64',
+ 'linux2' : 'linux-x86_64',
'win32' : 'windows',
'cygwin' : 'windows',
'darwin' : 'darwin-x86'
问题3:
aarch64-linux-android-g++: error: unrecognized command line option '-msoft-float'
aarch64-linux-android-g++: error: unrecognized command line option '-mthumb-interwork'
不识别的命令
解决办法:修改Build/Targets/arm-android-linux/Config.scons交叉编译工具的版本即可
ANDROID_TOOLCHAIN = 'arm-linux-androideabi-4.9
问题4:
In file included from Source/Core/PltUPnP.h:45:0,
from Source/Tests/FileMediaServer/FileMediaServerTest.cpp:39:
Source/Core/PltTaskManager.h:45:21: fatal error: Neptune.h: No such file or directory
#include "Neptune.h"
直接cd进Neptune,发现竟然是空的(lll¬ω¬),只能自己下载Neptune库了,下载完毕,将Neptune的Source和ThirdParty拷贝至Neptune中即可
这时按照官网执行命令即可:
> scons target=arm-android-linux build_config=Release
> cd Source/Platform/Android/module/platinum
> ndk-build NDK_DEBUG=0
成功编译: