Ubuntu 20.04下编译Android Alexa Auto SDK 3.2.1出现rpm-native编译错误
Ubuntu 20.04 编译 Alexa Auto SDK 3.2.1 rpm-native 编译失败解决方案
报错说明
该报错是AACS 3.2.1内置的旧版Yocto编译体系和Ubuntu 20.04系统原生依赖不兼容导致,完整报错如下:
ERROR: rpm-native-1_4.13.90+gitAUTOINC+a8e51b3bb0-r0 do_compile: oe_runmake failed
ERROR: rpm-native-1_4.13.90+gitAUTOINC+a8e51b3bb0-r0 do_compile: Function failed: do_compile
可行解决方案
方案1:修改rpm-native源码适配OpenSSL 1.1.x(最轻量化,无需改动系统环境)
- 进入rpm-native的源码目录,默认路径为:
AACS源码根目录/build/tmp/work/x86_64-linux/rpm-native/4.13.90+gitAUTOINC+a8e51b3bb0-r0/git - 编辑
lib/rpmio/digest_openssl.c文件:- 将所有
EVP_MD_CTX_create()调用替换为EVP_MD_CTX_new() - 将所有
EVP_MD_CTX_destroy()调用替换为EVP_MD_CTX_free()
- 将所有
- 清理rpm-native的编译缓存:
rm -rf AACS源码根目录/build/tmp/work/x86_64-linux/rpm-native/ - 重新执行编译命令:
./build.sh android -t androidarm
方案2:切换系统gcc版本到7.x(通用兼容老版Yocto)
AACS 3.2.1官方编译环境为Ubuntu 18.04,对应默认gcc版本为7.x,切换后可解决绝大多数兼容性问题:
- 安装gcc 7版本包:
sudo apt install gcc-7 g++-7 -y sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9
- 执行版本切换命令,在弹出的列表中选择gcc-7对应的编号回车即可:
sudo update-alternatives --config gcc - 清理AACS全量编译缓存后重新执行编译即可
方案3:临时屏蔽废弃API报错(临时编译快速验证用)
- 执行编译前先输入环境变量配置命令:
export CFLAGS="-Wno-error=deprecated-declarations" export CXXFLAGS="-Wno-error=deprecated-declarations"
- 直接执行编译命令即可,该方法会跳过所有API废弃的报错转为警告,适合临时快速验证编译场景
内容的提问来源于stack exchange,提问作者Pooja Acharya
相关产品推荐
相关产品推荐

