ubuntu18编译Android5.1源码报错及解决方案集合

本文详细介绍了在Ubuntu18上编译Android 5.1源码时遇到的四个错误及对应的解决步骤。包括OpenJDK版本不匹配、aidl编译失败、libcompiler_rt.so和libnativehelper.so编译错误,每个问题都给出了具体的解决方法,如修改环境变量、替换链接器和调整Android.mk文件。

一、“You asked for an OpenJDK 7 build but your version is java version "1.7.0_72" Java(TM) SE”

解决方法:

1、下载OpenJDK7:https://jdk.java.net/java-se-ri/7

在这里插入图片描述

2、sudo tar zxvf openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz -C /opt

3、# 修改profile文件
sudo gedit /etc/profile

# 加入下面的配置
export JAVA_HOME=/opt/java-se-7u75-ri
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

# 更新profile文件
source /etc/profile

4、java -version查看版本号

在这里插入图片描述

5、修改envsetup.sh文件

  a、sudo gedit build/envsetup.sh

  b、刚才解压的jdk路径粘贴到下方的 JAVA_HOME 变量中

 

6、修改main.mk文件

  sudo gedit build/core/main.mk

# 注释掉第 171 行的终止命令 :

# $(error stop)

 

二、“make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] 已放弃 (core dumped)”

解决方法:

export LC_ALL=C

 

三、“make: *** [out/host/linux-x86/obj32/lib/libc++.so] Error 1”

解决方法:

1、art/build/Android.common_build.mk中把true改为false

# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),false)          #ture--->false
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := ture
endif

2、 执行命令,更改链接指向 

ln -sf /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

 

四、 “make: *** [out/host/linux-x86/obj32/lib/libcompiler_rt.so] Error 1”

解决方法:
   在build/core/clang/Host_x86_common.mk 的第7 - 11行左右位置
   ifeq ($(HOST_OS),linux)
   CLANG_CONFIG_x86_LINUX_HOST_EXTRA_ASFLAGS := \
  --gcc-toolchain=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG) \
  --sysroot=$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/sysroot \
  -B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \
  -no-integrated-as
  
   添加 -B$($(clang_2nd_arch_prefix)HOST_TOOLCHAIN_FOR_CLANG)/x86_64-linux/bin \ 这行

 

五、“make: *** [out/host/linux-x86/obj32/lib/libnativehelper.so] Error 1”

解决方法:

source_android代表你的android源码根目录

1、cd  <source_android>/art/build/
vim Android.common_build.mk    //修改第119行
修改前:
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif
修改后:
# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),false)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := true
endif

2、经过第一次修改之后发现编译还是报同样的错误,执行下面:

 cp /usr/bin/ld.gold   <source_android>/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld 

3、修改过上述代码后,最好执行一次make update-api,再make。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值