Ubuntu(16.0.4)上编译android8.0源码(资料最全版本)

本文档详细介绍了在Ubuntu 16.0.4上编译Android 8.0源码的全过程,包括系统和软件的准备、Repo工具的安装、源码下载、环境配置、SDK和模块编译、解决编译过程中遇到的各种问题,如Python版本、内存不足等。通过这个指南,读者可以学习到完整的Android系统源码编译流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

首先,安装linux系统,我们需要一个虚拟机,然后再把linux系统安装到虚拟机上。才完成一个能正常运行和工作的环境。
为什么选择ubuntu版本的linux系统?
总所周知,Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。
不同Linux版本系统选择:
Debian:一般来说Debian作为适合于服务器的操作系统,它比Ubuntu要稳定得多。开源资料少

Ubuntu:Ubuntu是一个以桌面应用为主的Linux操作系统 (因此linux系统,是支持桌面操作的)

它的图形界面固然漂亮,但这也决定了它最佳的应用领域是桌面操作系统而非服务器操作系统。最受欢迎,适合桌面操作

CentOS:你会发现非常多的商业公司部署在生产环境上的服务器都是使用的CentOS系统。主要用在公司服务器上。

**总结:**如果装在自己电脑中而不是服务器的话,就要选择桌面操作的ubuntu系统。如果安装到服务器,需要选择centos版本的linux系统

必备软件

Repo:android源码同步工具
Ubuntu系统:16.0.4,默认安装了Python2.7和3.5
python:版本大于3.6及以上,注意:2.7版本的python一定要保留,源码编译需要用2.7版本的python
android系统:自己选择android版本 android-8.1.0_r1 参考附录资料
jack-server:源码编译过程会自动启动jack-server服务器。手动启动(jack-admin start-server)

配置文件:
1,/etc/profile :全局配置文件路径,配置了openjdk路径,python路径
2, ~/.bashrc 同上(当前用户配置文件路径,配置全局,就不用配置当前用户了) export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’
3,.repo/manifests.git/config :android源码下载路径配置文件,用于提高repo sync 源码同步速度
4, /etc/apt/sources.list : 可以添加一些国内镜像地址 ,用于提高apt-get install 安装软件包的速度
5,etc/hosts :域名映射地址。暂时不需要改动
jack-server服务器
sourcecode/prebuilts/sdk/tools/jack-admin文件 :配置jack-server
git配置文件:
~/.gitconfig 里面就是配置过的git 邮箱和用户名信息
**

硬件:

**
虚拟机内存:运行内存最好超过8G(13G左右,条件可以16G都行),磁盘内存至少250G,然后分配给jack-server内存8G左右用于编译android 系统,13G考虑因素:正常打开虚拟机,保证虚拟机运行内存大概是2G左右。然后分配8G给jack-server编译。
增加jack-server内存:
修改源码目录下的 prebuild/sdk/tools/jack-admin文件

JACK_SERVER_COMMAND=“java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME” # 改成下面这行,增加java堆大小。

JACK_SERVER_COMMAND=“java -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx8000M -cp $LAUNCHER_JAR $LAUNCHER_NAME”
4096编译失败了,改成7000M试下,内存大小可以自己调整

正式篇章

ubuntu系统Android源码编译流程
1,安装虚拟机 (本地虚拟机文件:G:\VMware-workstation-full-12.1.0-3272444.exe)
2,在虚拟机安装ubuntu系统(16.0.4,默认安装了Python2.7和3.5) 路径:G:\ubuntu-16.04.6-desktop-amd64.iso
3,在系统上安装OpenJDK环境 (源码编译:OpenJDK支持,但JDK不支持)
首先移除ubuntu自带的openJDK,命令:sudo apt-get purge openjdk*
如果ubuntu系统版本是Ubuntu16.0.4 及以上,则可以直接命令安装:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
安装后,输入命令java -version 查看是否安装成功。
然后配置环境变量:1,先确认安装的OpenJDK路径(sudo update-alternatives --config java)2;确认环境变量是否配置。如果是全局环境变量:vim /etc/profile; 配置完成后,source /etc/profile 使环境变量生效
4,安装各种包
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
5,安装repo 和下载Android源码
安装repo,参考下面的 linux–Repo的介绍与安装和Android源码下载
源码下载: 需要借助repo工具,google用repo工具实现git类似的功能,具体如下:
…/bin/repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r1 //指定下载分支
…/bin/repo sync //repo放在bin目录下,相当于git clone下载源码,可以-j4 开启线程同步
6,编译源码
初始化环境,命令:执行envsetup.sh 这个脚本
source build/envsetup.sh
然后选择编译的目标模式,有3种可选,分别

<think>我们正在寻找基于Ubuntu16.04的clangd15.0.0编译包(x86_64架构)。根据用户之前的对话,我们注意到用户已经提供了15.0.3版本的链接,并询问15.0.0版本。在之前的回答中,我们给出了一个Ubuntu18.04的预编译包链接。现在用户希望得到Ubuntu16.04版本。然而,我们需要查看LLVM官方发布的预编译包。通常,LLVM官方发布的预编译包会针对多个Linux发行版和版本。但是,从历史发布来看,LLVM官方预编译包通常只提供针对较新Ubuntu版本的构建。例如,对于15.0.0版本,官方可能只提供了Ubuntu18.04的包。我们可以通过查看LLVM的发布页面来确定:https://github.com/llvm/llvm-project/releases/tag/llvmorg-15.0.0在该页面中,我们确实可以看到多个预编译包,但是针对Linux的预编译包通常只有少数几个版本。在15.0.0的发布中,我们看到的预编译包有:clang+llvm-15.0.0-aarch64-linux-gnu.tar.xzclang+llvm-15.0.0-amd64-pc-solaris2.11.tar.xzclang+llvm-15.0.0-arm64-apple-darwin21.0.tar.xzclang+llvm-15.0.0-powerpc64le-linux-gnu.tar.xzclang+llvm-15.0.0-x86_64-apple-darwin.tar.xzclang+llvm-15.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz注意:这里并没有针对Ubuntu16.04的预编译包。但是,我们也可以考虑使用其他兼容的包。因为Ubuntu16.04和18.04都是基于glibc的,但glibc版本不同。在Ubuntu16.04上运行为Ubuntu18.04构建的软件可能会因为glibc版本过低而无法运行。因此,我们需要寻找是否有为Ubuntu16.04构建的包,或者是否有其他方法。另外,我们也可以考虑使用其他第三方提供的包,或者从源码编译。但是,用户明确要求预编译包。经过检查,官方确实没有提供Ubuntu16.04的预编译包。那么,我们只能提供替代方案:1.使用官方Ubuntu18.04的预编译包,并尝试在Ubuntu16.04上运行(可能需要解决glibc依赖问题)。2.源码编译clangd15.0.0。由于用户可能希望尽可能使用预编译包,我们可以尝试寻找非官方的构建,但官方并没有提供。因此,我们只能建议使用Ubuntu18.04的预编译包,并说明在Ubuntu16.04上可能需要的额外步骤(如升级glibc,但这通常不推荐,因为会影响系统稳定性)或者使用静态链接的版本(但官方没有提供静态链接的预编译包)。另一种方案是使用Docker容器来运行clangd,但用户可能不想使用容器。考虑到这些,我们给出以下建议:-官方没有为Ubuntu16.04提供预编译包。-可以尝试使用Ubuntu18.04的预编译包,但需要满足glibc版本要求(Ubuntu16.04的glibc版本是2.23,而Ubuntu18.04的是2.27)。如果系统glibc版本过低,程序将无法运行。-如果必须使用Ubuntu16.04,建议从源码编译。因此,我们的回答将包括:1.说明官方没有提供Ubuntu16.04的预编译包。2.提供Ubuntu18.04的预编译包链接(虽然用户之前已经得到过,但再次提供)。3.提供在Ubuntu16.04上从源码编译的步骤。同时,生成相关问题。注意:引用[3]提到在Ubuntu18.04编译是OK的,而Ubuntu16.04没有测试,但用户要求Ubuntu16.04的预编译包,所以我们需要谨慎。下面组织回答。</think>以下是针对 **Ubuntu 16.04 系统的 clangd 15.0.0编译包解决方案**: ### 官方预编译包兼容性分析 1. **官方未提供 Ubuntu 16.04 专用包** LLVM 官方发布的 15.0.0编译包仅针对 Ubuntu 18.04 及更新版本构建[^1]: ```bash clang+llvm-15.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz # 官方包 ``` 2. **Ubuntu 16.04 兼容性问题** 直接使用 18.04 构建的包在 16.04 运行时会出现 GLIBC 版本冲突: ```bash /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found # 典型错误[^3] ``` Ubuntu 16.04 默认 GLIBC 版本为 2.23,而 18.04 构建要求 ≥2.27。 --- ### 替代解决方案 #### 方案 1:源码编译(推荐) ```bash # 1. 安装依赖 sudo apt-get update sudo apt-get install -y cmake ninja-build g++ python3 libstdc++6 # 2. 下载源码 wget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/llvm-project-15.0.0.src.tar.xz tar -xf llvm-project-15.0.0.src.tar.xz # 3. 编译 clangd cd llvm-project-15.0.0.src mkdir build && cd build cmake -G Ninja ../llvm \ -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \ -DCMAKE_INSTALL_PREFIX=/opt/clangd_15.0.0 ninja clangd # 4. 安装 sudo ninja install-clangd echo 'export PATH="/opt/clangd_15.0.0/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` #### 方案 2:兼容性补丁(实验性) 对官方 18.04 包进行 GLIBC 降级兼容处理: ```bash wget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/clang+llvm-15.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz tar -xf clang+llvm-15.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz # 使用 patchelf 修改动态链接 sudo apt-get install patchelf find ./clang+llvm-15.0.0/bin -type f | while read file; do patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 \ --replace-needed libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 \ "$file" done # 验证 ./clang+llvm-15.0.0/bin/clangd --version ``` --- ### 验证安装 ```bash clangd --version # 预期输出: clangd version 15.0.0 ``` --- ### 注意事项 1. **编译依赖** Ubuntu 16.04 需确保 GCC ≥ 5.0(默认安装 GCC 5.4.0 满足要求)[^3]: ```bash gcc --version # 检查版本 ``` 2. **磁盘空间** 源码编译需预留至少 15GB 磁盘空间,完整构建耗时约 1-2 小时(8 核 CPU)。 3. **内核开发支持** 若需为 Linux 内核开发配置 clangd,需生成 `compile_commands.json`: ```bash make CC=clang compile_commands.json # 在内核源码目录执行 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值