首页 > 编程知识 正文

ubuntu android(linux程序编译命令)

时间:2023-05-03 16:41:46 阅读:67299 作者:1257

最近试着编译了Android源代码,写了自己编译的过程,翻了自己的笔记本。 在这里共享。

这里尽可能使用国内的镜像源。 速度应该很快。 (这是tdzm修改的脚本,包括后面的docker。 在此感谢他们。 )

传统方法

JDK的安装和版本切换

安装Oracle JDK (这里是编译Android4.4源代码并使用JDK6版本)。

sudo add-apt-repository PPA : web upd8team/Java

Sudo Apt-get更新

sdoapt-getinstalloracle-Java6- installer

也可以安装open JDK (安卓官方使用)。 (推荐) )。

SDO add-apt-repository PPA : open JDK-r/PPA

Sudo Apt-get更新

sudo apt-get install open JDK-7-JDK

JDK版本切换

辅助更新-备用- -配置Java

辅助更新-备用- -配置javac

依赖软件的安装

sudo apt-getinstalllibx 11-dev : i386 lib readline6- dev 3360 i386 libgl1- mesa-devg-multilib

sudo apt-get install-ygitflexbisongperfbuild-essentiallibncurses5- dev : I 386

sudo apt-getinstalltofrodospython-markdown libxml2- utilsxsltproczlib 1g-dev : I 386

sudo apt-getinstalldpkg-dev libsdl 1.2-devlibesd0- dev

sudo apt-getinstallgit-coregnupgflexbisongperfbuild-essential

sdoapt-getinstallzipcurlzlib 1g-dev gcc-multilibg-multilib

sdoapt-getinstalllibc6- dev-i386

sudo apt-getinstalllib 32 ncurses5- dev X11 proto-core-devli bx11-dev

sudo apt-getinstalllibgl1- mesa-dev libxml2- utilsxsltprocunzipm 4

sdoapt-getinstalllib 32 z-devccachebison

下载repo工具

mkdir ~/笨蛋菠萝

PATH=~/呆瓜菠萝:$PATH

curl 3359 storage.googleapis.com/git-repo-downloads/repo~~ /笨蛋菠萝/Repo

#如果上述URL不可用,则可以使用:

# Curl-SSL ' https://Gerrit -谷歌source.proxy.ustc lug.org/git-repo//master/repo? 格式=文本'|base64-d~/呆瓜菠萝/repo

chmod a x ~/笨蛋菠萝/repo

在本例中,建议将添加到环境变量中,以便以后每次启动时不要设置PATH

vim ~/.bashrc将添加到文件的末尾

导出路径=~/白痴菠萝:$PATH

然后重新振作起来

source ~/.bashrc

对于zsh,请编辑vim ~/.zshrc

添加

导出路径=~/白痴菠萝:$PATH

然后重新振作起来

source ~/.zshrc

下载和同步源代码

repo init-ugit ://mirrors.ustc.edu.cn/aosp/platform/manifest-b Android-7.1.1 _ R1

repo sync---force-sync---force-broken

如果提示无法连接到gerrit.googlesource.com,可以编辑~/白痴菠萝/repo,将REPO_URL中的行替换为以下行:

repo _ URL=' https://Gerrit-Google source.proxy.ustc lug.org/git-repo '

也可以使用同步

重做同步

编译程序

中选择所需的墙类型

export USE_CCACHE=1

/p>

export CCACHE_DIR=ccache

prebuilts/misc/linux-x86/ccache/ccache -M 50G

准备编译环境

source build/envsetup.sh

用lunch命令选择编译目标

lunch aosp_angler-userdebug   //lunch aosp_arm64-eng

make clobber

make -j12

所有的编译目标的格式都是:BUILD-BUILDTYPE,BUILD指的是指定特性的结合,

BUILDTYPE是下面列出的其中一个:

Buildtype

用途

user

有限的权限;适合一般用户

userdebug

类似user模式,但有root权限和debug能力,适合debug

eng

带有额外的debug工具的开发配置。

运行

export ANDROID_PRODUCT_OUT=out/target/product/generic

export ANDROID_神勇的鱼=out/host/linux-x86/呆萌的菠萝

PATH=$ANDROID_神勇的鱼:$PATH

source build/envsetup.sh

lunch aosp_arm-eng

emulator64-arm -gpu off -memory 2048

PS

编译出错

编译出现flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertioncnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed. Aborted (core dumped)

可以将

export LC_ALL=C

添加到bashrc。或者直接执行。LC_ALL=C 是为了去除所有本地化的设置,让命令能正确执行。

make版本问题

编译Android源码需要make的版本为3.8.1或者3.8.2(在Ubuntu18上的make版本太新了)需要降版本

在http://ftp.gnu.org/gnu/make/下载相应版本的压缩包,然后解压,切换目录

执行

./configure --prefix=/usr

make

sudo make install

如果出现错误提示glob/glob.c:xxx:  undefined  reference  to __alloca'的错误,

修改 /glob/glob.c为(即加两行注释)

//      #if  !defined  __alloca  &&  !defined  __GNU_LIBRARY__

#  ifdef        __GNUC__

#    undef  alloca

#    define  alloca(n)        __builtin_alloca  (n)

#  else        /*  Not  GCC.    */

#    ifdef  HAVE_ALLOCA_H

#      include  

#    else        /*  Not  HAVE_ALLOCA_H.    */

#      ifndef  _AIX

#        ifdef  WINDOWS32

#          include  

#        else

extern  char  *alloca  ();

#        endif  /*  WINDOWS32  */

#      endif  /*  Not  _AIX.    */

#    endif  /*  sparc  or  HAVE_ALLOCA_H.    */

#  endif        /*  GCC.    */

#  define  __alloca        alloca

//      #endif

保存后编译通过。(这个错误是glibc2.7引起的)

随笔

编译的时候make 12线程就会有这样的壮观场面

采用docker自动编译

linux至少要分配100g的硬盘空间。

安装docker

默认源中没有docker,我们需要在添加backports源,在/etc/apt/sources.list文件 加入下面这行

deb http://http.debian.net/debian 冷静的戒指-backports main

运行如下命令安装docker

apt-get update

apt-get install docker.io

开始编译

开始之前先启动docker服务,不然到后面会报错

/etc/init.d/docker start

设置AOSP_VOL环境变量,设置为你要存放源码的路径,给VMWare添加硬盘扩容的设置成挂载的硬盘的路径。(注意这个export会在重新打开一个shell以后失效)

export AOSP_VOL=/home/Android

下载Wrapper脚本,我这里演示编译kitkat(Android 4.4),编译其他版本可以参考, 脚本对国内环境做了优化,使用速度比较快的清华源。

curl -O https://raw.githubusercontent.com/tiann/docker-aosp/master/tests/build-kitkat.sh

编译源码,直接运行上一步下载下来的源码。该脚本会下载docker镜像,并且下载Android源码到AOSP_VOL指定的路径,然后编译。(注意要使用root权限,否则将无法正常使用docker)

sudo bash ./build-kitkat.sh

编译完成后,使用的是系统默认自带的内核,

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。