zoukankan      html  css  js  c++  java
  • 飞凌 OK6410 开发板 Ubuntu16.04 desktop android-4.0.1_r1的编译环境搭建

    Ubuntu16.04 desktop android-4.0.1_r1的编译环境搭建

      版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2020-06-08,13:19:31
      作者By-----Reverse-xiaoyu----博客园

      Ubuntu12.04,Ubuntu14.04的环境我都有搭配过,但是适配我自己其他开发环境,我依旧采用Ubuntu16.04 desktop来创建android-4.0.1_r1的编译环境,搭建这个环境耗费了我很长时间,记录一下从我搭建Ubutnu系统开始吧

    1、Ubuntu16.04虚拟机的搭建

      我使用的是VMware Workstation 15中文版来创建Ubuntu16.04 desktop。

      VMware Workstation 15中文版下载连接:提取码:3qnh

      Ubuntu16.04 desktop:提取码:ppmx

    1.1、Ubuntu16.04 的安装

               

      点击创建新的虚拟机如下图所示:

                     

       点击下一步:

                     

      下一步:

                      

      下一步:

                     

       下一步:

                     

       下一步:先选择硬件配置

                     

       自定义硬件:博主的机器是i7:10750H CPU,16GB内存,所以给虚拟机分配的是8G 内存,8线程

                     

                      

                      

      网络适配器建议选择NAT模式:

                      

       主要是这几个的配置,后面 USB 控制器,声卡,打印机,显示器,就都默认配置就好了,配置完成后,点击关闭

                     

      点击完成后如下:

                      

      点击 Install Ubuntu进行安装

                     

       点击 Continue,安装过程中千万不到勾选下载更新跟安装第三方软件,否则你会因为 Ubuntu 默认源的原因,导致你的安装时间漫长无比,可以等系统安装完,进入系统更改下载源后,通过命令行去更新软件或者下载软件,请跟随我博客的脚步我带你节省最大的时间去安装。

                     

       点击 Install Now

                     

       会弹出下面一个框,继续点击 Continue

                     

       选择你的位置:这个会关系到你 Ubuntu 系统的时间,无所谓了,爱写哪写哪,反正只是虚拟机拿来做编译环境用,看时间还是可以使用大家的手机,手表看的

                     

       这个框会因为分辨率问题,窗口部分显示不全,没关系,你鼠标拖进去,是可以移动的,键盘也默认配置就OK

                     

       点击 Continue

                     

       配置计算机用户名跟密码

                      

      框不完整?鼠标可以拖动啦,分辨率显示的问题,后面系统安装完成可以修改,点击Continue开始系统的安装吧,耐心等待他安装完成就行

                      

    1.2、VMware Tools 的安装

      虚拟机安装完成后,请安装 VMware Tools,它能解决 Ubuntu 终端不能粘贴复制的问题,也能解决屏幕自动适应客户端窗口大小问题

      1、在虚拟机下会看到安装 VMware Tools,单击安装。

                      

      2、在虚拟机设备下出现VMware Tools这一项,点击打开,里面有一个VMwareTools-10.1.6-5214329.tar.gz

                     

       3、将这个文件复制到某个目录下,比如在 home下新建 Documents 文件夹

        4、进入 Documents 解压到VMwareTools-10.1.6-5214329.tar.gz

    1 cd ~/Documents
    2 tar -zxvf VMwareTools-10.1.6-5214329.tar.gz

      5、进入到刚刚提取到的vmware-tools-distrib文件夹下,然后输入命令:sudo ./vmware-install.pl,然后回车。碰到yes/no 你就输入 yes,没有 yes/no 等待你就按 Enter,一路执行下去让他安装完毕就 OK 了

    1 cd  vmware-tools-distrib
    2 sudo ./vmware-install.pl

      6、安装完毕,重启虚拟机,然后你的屏幕会正常显示大小了,终端可以复制粘贴了

    1.3、Ubuntu Software & updates 下载源的更新

      1、点击桌面右上角,设置,点击 System Settings

                    

       2、点击 Software & Updates

                   

       3、点击 Download from:,然后点击 Other...

                   

       4、找到 China 选择阿里云,当然 China 底下的源随便你选了,我选的是 阿里 源,点击 Choose Server

                   

      5、输入你创建系统时如数的密码,点击 authenticate(证明,证实),然后就 OK 了

                   

       6、最后打开 Ubuntu 终端,更新下载源以及软件

    1 sudo apt-get install update
    2 sudo apt-get install upgrade

    1.4、配置 vim

      没有 vim 用 Ubuntu 我会很难受,所以今早把 vim 进行简单配置一下

      1、使用命令 $ sudo apt-get install vim  来安装vim,安装后的vim需要进行一些配置,不然使用起来会有些不方便,比如不会自动缩进。

      2、使用命令 $ vim /etc/vim/vimrc 修改vim配置文件  (修改该文件对所有用户都生效),在该文件最后添加如下代码:

     1 set ai                          " 自动缩进,新行与前面的行保持—致的自动空格
     2 set aw                          " 自动写,转入shell或使用:n编辑其他文件时,当前的缓冲区被写入
     3 set flash                       " 在出错处闪烁但不呜叫(缺省)
     4 set ic                          " 在查询及模式匹配时忽赂大小写
     5 set nu
     6 set number                      " 屏幕左边显示行号
     7 "set showmatch                   " 显示括号配对,当键入“]”“)”时,高亮度显示匹配的括号
     8 set showmode                    " 处于文本输入方式时加亮按钮条中的模式指示器
     9 set showcmd                     " 在状态栏显示目前所执行的指令,未完成的指令片段亦会显示出来
    10 set warn/nowarn                 " 对文本进行了新的修改后,离开shell时系统给出显示(缺省)
    11 set ws/nows                     " 在搜索时如到达文件尾则绕回文件头继续搜索
    12 set wrap/nowrap                 " 长行显示自动折行
    13 "colorscheme evening            " 设定背景为夜间模式
    14 filetype plugin on              " 自动识别文件类型,自动匹配对应的, “文件类型Plugin.vim”文件,使用缩进定义文件
    15 set autoindent                  " 设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置
    16 set cindent                     " 以C/C++的模式缩进
    17 set noignorecase                " 默认区分大小写
    18 set ruler                       " 打开状态栏标尺
    19 set scrolloff=5                 " 设定光标离窗口上下边界 5 行时窗口自动滚动
    20 set shiftwidth=4                " 设定 << 和 >> 命令移动时的宽度为 4
    21 set softtabstop=4               " 使得按退格键时可以一次删掉 4 个空格,不足 4 个时删掉所有剩下的空格)
    22 set tabstop=4                   " 设定 tab 长度为 4
    23 set wrap                        " 自动换行显示
    24 syntax enable
    25 syntax on                       " 自动语法高亮

      注意第10、11、12行只能选一个值,不然会报错。如果有些功能自己不需要可以在行前使用符号"注释该行

      上面的方法是对vim的一些基本配置,更高级的配置可以通过vim插件实现。这里只介绍 vim 的基本配置就行了,能保证使用,更高级的配置另寻百度,这里不是我们搭建安卓编译环境的重点

    2、android-4.0.1_r1代码的获取

    2.1、git 的安装与简单使用

      git 的安装与使用并不是本文重点,但是由于安卓代码需要用 repo 来获取,下载 repo 需要先安装 git,因此附带简单描述

    1 sudo apt-get install git
    2 sudo apt-get install git-doc git-svn git-email git-gui gitk

      其中 Git 软件包包含了大部分 Git 命令,是必须安装的软件包。而第二条语句中安装的 git-doc、git-svn、git-email、git-gui、gitk 本来也是 Git 软件包的一部分,但是因为有着不一样的软件包依赖(如更多的 perl 模组和 tk 等),所以单独作为软件包发布,如果不需要使用这些软件包,可以不安装他们。

      git init :创建版本库

      git status:查看文件修改

      git add:将修改的文件提交至暂存区

      git commit:将暂存区提交至本地仓库

      git push;将本地仓库的提交提交至远端仓库

      git branch:创建分支

      git checkout:切换分支

      具体的 git 使用请移步至其他 git 使用的博客

    2.2、配置 git ssh

      1、由于 GitHub 上传代码时需要 SSH 校验。因此,需要使用下面的命令在~/.ssh目录中生成一个密钥文件(id_rsa)和一个公钥文件(id_rsa.pub)

    1 git config --global user.name "你的用户名"
    2 git config --global user.email "你的注册邮箱"

      然后我们可通过命令 git config --list,查看是否设置成功。

      2、如果你的 Home 目录没有 .ssh目录,请先 mkdir ~/home/.ssh,并进入 .ssh 目录(cd ~/.ssh)

    1  ssh-keygen -t rsa -C "youremail@example.com"

      请将  “youremail@example.com”  换成注册 GitHub 张号时输入的 E-mail。执行上面的命令会要求做一些选择或输入

                   

      3、登录GitHub填入client端生成的公钥
      登录GitHub,在个人账号那里找到并打开“settings”,点入“SSH and GPG keys”:
                 

                       

       title这里取个便于自己区分记忆的名字即可,Key输入框中粘贴id_rsa.pub公钥文件中的内容。

                 

      找到id_rsa.pub文件(/home/.ssh/id_rsa.pub),将文件中的内容全部复制粘贴到Key中,点击“Add SSH key”。

      如果生成的公钥、密钥错误或者设置不正确,则会输出如下的信息。

      Permission denied(publickey)

      fatal:The remote end hung up unexpectedly

      如果一切都做得很完美,就会输出如下信息:

      Hi androidguy! You've successful authenticated, but GitHub does not provide shell access

    2.3、下载 repo 工具:

    1 mkdir ~/bin
    2 PATH=~/bin:$PATH
    3 curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    4 chmod a+x ~/bin/repo

      上面的经过实测,是可以获取到 repo 工具的。

    1 curl http://android.googlesource.com/repo > ~/bin/repo

    2.4、安装python3.6以上版本 

      由于Ubuntu16以下默认的python版本为Python 2.7.12、Python 3.5.2,但是repo的运行环境是在python3.6以上版本,因此我们需要自己手动安装python3.6以上版本,博主这里安装的是目前最新的python3.8.1版本 

      配置依赖环境:

    1 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev

      1、下载python3.8.1版本

      python3.8.1:提取码:efo1

      2.解压下载的包,在这之前你可以先mv你的包到指定位置解压

    1 tar -zxvf Python-3.8.1

      3.进入解压目录

    1 cd Python-3.8.1/

      4.建立安装的目录

    1 sudo mkdir -p /usr/local/python3

      5.编译安装

      执行这步是后面最好加上 --enable-optimizations 会自动安装pip3及优化配置

    1 ./configure --prefix=/usr/local/python3 --enable-optimizations
    2 make
    3 sudo make install

      6.删除软链接

      先执行查看版本,如果有则证明软链接已存在,需要先删去以前的再重新建立

    1 //这里表明我已有python3的软链接而没有pip3的软链接所以需要删除python3的软链接重新建立
    2 admin@J-computer:~/Python-3.7.1$ python3 -V
    3 Python 3.5.2
    4  
    5 admin@J-computer:~$ pip3 -V
    6 bash: /usr/lib/command-not-found: /usr/bin/python3: bad interpreter: No such file or directory
    1 rm -rf /usr/bin/python3
    2 rm -rf /usr/bin/pip3

      7.建立新的指向python3.7的软链接

    1 #添加python3的软链接
    2 ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
    3 #添加 pip3 的软链接
    4 ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3

      8.检测版本

    1 admin@J-computer:~$ python3 -V
    2 Python 3.7.1
    3 admin@J-computer:~$ pip3 -V
    4 pip 10.0.1 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

    2.5、下载源码(这里提供两种方式)

       1.使用每月更新的初始化包(推荐)

       由于首次同步需要下载约 30GB 数据,过程中任何网络故障都可能造成同步失败,强烈建议使用初始化包进行初始化。下载 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar,下载完成后记得根据 checksum.txt 的内容校验一下。由于所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以只保留了 .repo 目录,下载后解压再repo sync 一遍即可得到完整的目录。

      使用方法如下:

    1 wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
    2 tar xf aosp-latest.tar
    3 cd AOSP    ## 解压得到的 AOSP 工程目录
    4 ## 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
    5 ## repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 (选择版本同步)
    6 repo sync  ## 通常同步一遍即可得到完整目录
    7 ## 或 repo sync -l 仅checkout代码

       此后,每次只需运行 repo sync 即可保持同步。强烈建议保持每天同步,并尽量选择凌晨等低峰时间,上面的下载大约需要好几天,博主自己下载花费了4天4夜

      查看所有分支

    1 cd .repo/manifests
    2 git branch -a

       如果想切换到其它分支可以重新执行

    1 repo init -b android-6.0.1_r63
    2 repo sync

       2.传统初始化方法

      建立工作目录:

    1 mkdir WORKING_DIRECTORY
    2 cd WORKING_DIRECTORY

       初始化仓库:

    1 repo init -u https://android.googlesource.com/platform/manifest
    2 ## repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest (也可以)

       上述命令会要求Repo下载最新的Android源代码,也就是master分支,如果想下载其他指定分支

    1 repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

       同步Android源代码

    1 repo sync

       博主这里下载的是指定分支,下载的android-4.0.1_r1,这里的代码下载需要翻墙,需要一个较稳定的网速,我大概是下载了1天

      这里后续我会上传百度网盘链接,由于我已经编译过了,代码不干净,所以不好打包压缩,后续我再下一份纯净的代码,上传百度网盘供大家下载

       下载好的代码,相关目录如下

    目录名 描述
    abi 应用程序二进制接口(Application Binary Interface)
    bionic C/C++运行时库。在NDK程序中很大一部分调用的就是这里面的程序
    bootable

    用于安卓装载和启动程序。其中就包括著名的bootloader和recovery。bootloader是Android中唯一在Linux内核运行之前的程序。通过这段程序可以初始化硬件、建立内存空间的映射图等,总之一句话,bootloader就是为Linux内核准备合适的运行环境。

    对于刷过机的读者对recovery应该很是熟悉。Recovery可以将一个压缩包(一般为zip格式)中的文件覆盖到手机内存中系统目录(主要是/system)的程序,也就是俗称的刷机程序

    build 用于编译Android源代码以及建立system.img、randisk.img等文件的工具
    cts 用于兼容性测试的工具
    dalvik Dalivik虚拟机的源代码
    development 高层的开发和调试工具
    device 与设备相关的代码。其中包含了moto、三星的设备相关代码
    docs 包含与Android源代码项目的文档和工具,如Dalivk虚拟机格式文档等
    external 扩展工具的源代码
    frameworks Android框架层源代码。也就是Android SDK(Java开发包)的源代码
    hardware 硬件层接口和库。HAL的源代码就在这个目录中
    libcore Java核心库
    ndk NDK的相关源代码
    packages 与Android系统一同发布的应用程序(apk程序)的源代码,如拍照、短信等程序都可以在这个目录中找到
    prebuilts Android在各种平台下编译之前要使用的工具
    sdk 在开发环境中使用的工具,如ddms、draw9patch、sdkmanager等
    system Android的基本系统

      2.6、还原python3版本

       repo 使用时需要3.6以上版本,但是当我将python3.8.1安装完后,将终端关闭掉,会发现后续终端无法打开,因此我将 python3 更换为 python3.8.1 下载安卓源码,在安卓源码下载完毕后,还原 python3 为Python 3.5.2 版本。以便我能打开终端

      目前博主只知道这个方法,如果有知道不还原 python3 版本的,修改其他位置能使 终端打开的,希望不忘吝啬告诉我一下方法,万分感激

    1 sudo mv /usr/bin/python3 /usr/bin/python3.mak
    2 sudo mv /usr/bin/pip3 /usr/bin/pip3.mak
    3 sudo ln -s /usr/bin/python3.5 python3
    1 admin@J-computer:/usr/bin$ python3 -V 
    2 Python 3.5.2

       还原过后,Ubuntu终端就可以使用了

    3、编译android-4.0.1_r1源码

      先不要着急怎么编译,请先看我编译过程中遇到的报错过程,看完你就不会想着要先编译了,先按我的步骤,一步步的修改把,虽然不保证一次能过,但是能减少一步步编译导致的不断编译报错

    1 sudo apt-get install git-core gnupg flex bison gperf build-essential 
    2 
    3       zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev 
    4 
    5       libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 
    6 
    7       libgl1-mesa-dev g++-multilib mingw32 tofrodos 
    8 
    9       python-markdown libxml2-utils xsltproc zlib1g-dev:i386

    3.1、android 4.0 配置 Java SE 1.6

      1、下载 jdk-6u33-linux-i586.bin:提取码:qus4

      2、移到/opt目录下执行

    1 chmod a+x jdk-6u33-linux-i586.bin
    2 sudo ./jdk-6u33-linux-i586.bin    

      3、添加环境变量:

    1 sudo vim /etc/profile

      在文件最后添加

    1 #set java environment
    2 export JAVA_HOME=/opt/jdk1.6.0_33
    3 export JRE_HOME=/opt/jdk1.6.0_33/jre
    4 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
    5 export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

      4、最后使环境变量生效:

    1 source /etc/profile

      5、配置完后,再查看jdk版本:

    1 $ java -version
    2 java -version
    3 java version "1.6.0_33"
    4 Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
    5 Java HotSpot(TM) Client VM (build 20.6-b01, mixed mode, sharing)

    3.2 Ubuntu16.04 默认 make 版本过高会导致编译报错

      报错信息就不贴了,我这里代码都已经编译过了,博文后面我去找一下他人的报错信息贴上

     1 /home/fei/dev/android/source/prada/kernel/drivers/input/touchscreen/focaltech/Makefile:9: *** missing separator。 停止。
     2 /home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input/touchscreen/focaltech' failed
     3 make[5]: *** [drivers/input/touchscreen/focaltech] Error 2
     4 make[5]: *** 正在等待未完成的任务....
     5 /home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input/touchscreen' failed
     6 make[4]: *** [drivers/input/touchscreen] Error 2
     7 /home/fei/dev/android/source/prada/kernel/scripts/Makefile.modbuiltin:54: recipe for target 'drivers/input' failed
     8 make[3]: *** [drivers/input] Error 2
     9 /home/fei/dev/android/source/prada/kernel/Makefile:1116: recipe for target 'drivers/modules.builtin' failed
    10 make[2]: *** [drivers/modules.builtin] Error 2
    11 make[2]: *** 正在等待未完成的任务....
    12 make[2]: *** wait: 没有子进程。 停止。
    13 Makefile:145: recipe for target 'sub-make' failed
    14 make[1]: *** [sub-make] Error 2
    15 make[1]: Leaving directory '/home/fei/dev/android/source/prada/kernel'
    16 kernel/AndroidKernel.mk:132: recipe for target 'out/target/product/prada/obj/KERNEL_OBJ/arch/arm64/boot/Image.gz-dtb' failed

      1、下载 make-3.81.tar.bz2 :提取码:xhqp 

      2、解压:

      将下载好的 make-3.8.1.tar.bz2 移动至 home 目录下,然后执行该命令:

    1 tar -xvf make-3.81.tar.bz2

      3、编译:/usr/bin/make 存在2个 make

    1 cd make-3.81/
    2 ./configure --prefix=/usr

      指定编译目录,如果只是执行 ./configure 该命令的话,系统默认将 make 安装到 usr/local/bin/make 中,无法替换系统默认的 make4.1,系统默认仍然是 make4.1;

      然后执行 make 命令编译:

    1 make
    2 sudo make install

      可以通过该命令查看当前系统的 make 版本:

    1 make --version

    3.3 Ubuntu16.04 默认 gcc、g++ 版本过高会导致编译报错

       Ubuntu16.04上更换的阿里源是无法直接 sudo apt-get install gcc-4.4、sudo apt-get install g++-4.4版本的

       首先需要更改 /etc/apt/sources.list

    1 sudo vim /etc/apt/sources.list

       将下面的粘贴至末尾

    1 deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe
    2 deb http://dk.archive.ubuntu.com/ubuntu/ trusty-updates main universe

       保存退出后更新一下源

    1 sudo apt-get update

      这个时候可以直接获取了

    1 sudo apt-get install g++-4.4
    2 sudo apt-get install gcc-4.4

       可以使用 gcc --version、g++ --version查看 g++ 跟 gcc 的版本,如果是4.4版本,就OK了

    3.4 perl的switch库

       如果没有安装这个库,将会导致编译报错

     1 Import includes file: out/target/product/mx3/obj/STATIC_LIBRARIES/libwebcore_intermediates/import_includes  
     2 target Generated: libwebcore <= external/webkit/Source/WebCore/css/tokenizer.flex  
     3 <span style="rgb(255, 255, 51);">Can't locate Switch.pm in @INC (you may need to install the Switch module)</span> (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.  
     4 BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.  
     5 Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23.  
     6 BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.pl line 23.  
     7 make: *** [out/target/product/mx3/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp] Error 2  
     8 make: *** Waiting for unfinished jobs....  
     9 make: *** [out/target/product/mx3/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/platform/ColorData.cpp] Error 2  
    10 target Generated: libwebcore <= external/webkit/Source/WebCore/html/parser/HTMLEntityNames.in  

       安装perl的switch库:

    1 sudo apt-get install libswitch-perl

     3.5、dalvik 报错

    1 dalvik/vm/native/dalvik_system_Zygote.cpp:216:43: error: ‘setrlimit’ was not declared in this scope
    2 err = setrlimit(contents[0], &rlim);
    3 ^
    4 <command-line>:0:0: warning: "_FORTIFY_SOURCE" redefined [enabled by default]
    5 dalvik/vm/native/java_lang_Float.cpp:1:0: note: this is the location of the previous definition
    6 /*
    7 ^
    8 make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1
    9 make: *** Waiting for unfinished jobs....

       解决办法
        添加头文件#include <sys/resource.h>到以下文件
        dalvik/vm/native/dalvik_system_Zygote.cpp

                    

     3.6、host Executable 报错

       报错信息:

    1 host Executable: emulator_renderer (out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/emulator_renderer)
    2 /usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/main.o: undefined reference to symbol 'XInitThreads'
    3 //usr/lib/i386-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
    4 collect2: ld returned 1 exit status
    5 make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/emulator_renderer] Error 1
    6 make: *** Waiting for unfinished jobs....

       解决办法:

      修改development/tools/emulator/opengl/host/renderer/Android.mk文件

    1 sudo gedit development/tools/emulator/opengl/host/renderer/Android.mk

      添加一行:LOCAL_LDLIBS += -lX11 注意最好是复制过去,右边的容易写错

                    

    3.7、后续报错信息解决

       错误1、/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
      make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1

       解决:

    1 sudo apt-get install libc6-dev-i386

       错误2、make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

       解决:

    1 sudo apt-get install g++-4.4-multilib

       错误3、

    1 external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
    2 compilation terminated.
    3 make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

       解决:

    1 sudo apt-get install zlib1g-dev

       错误4:

    1 /usr/bin/ld: cannot find -lz
    2 collect2: ld returned 1 exit status
    3 make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

      解决:

    1 sudo apt-get install lib32z1-dev

      错误5:

    1 bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
    2 /bin/bash: bison: command not found
    3 make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

      解决:

    1 sudo apt-get install bison

      错误6:

    1 Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
    2 /bin/bash: flex: command not found
    3 make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

      解决:

    1 sudo apt-get install flex

      错误7:

    1 /usr/bin/ld: cannot find -lncurses
    2 collect2: ld returned 1 exit status
    3 make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 

      解决:

    1 sudo apt-get install lib32ncurses5-dev

      错误8:

    1 prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
    2 compilation terminated.
    3 make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1

      解决:

    1 sudo apt-get install libx11-dev

      错误 9:

    1 sh: gperf: not found
    2 calling gperf failed: 32512 at ./makeprop.pl line 96.
    3 make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
    4 make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'  

      解决:

    1 sudo apt-get install gperf

      错误10:

    1 development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: fatal error: GL/glx.h: No such file or directory compilation terminated.
    2 make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1

      解决方法:

    1 sudo apt-get install libgl1-mesa-dev

      错误11:

    1 host SharedLib: lib64EGL_translator (out/host/linux-x86/obj/lib/lib64EGL_translator.so)
    2  /usr/bin/ld: cannot find -lGL
    3  collect2: ld returned 1 exit status
    4  make: *** [out/host/linux-x86/obj/lib/lib64EGL_translator.so] Error 1
    5  make: *** Waiting for unfinished jobs....

      解决方法 :

    1 sudo apt-get install libglu1-mesa-dev 

    3.8、/usr/bin/ld: cannot find -lxxx问题解决

       报错信息:

    /usr/bin/ld: 找不到 -lz collect2: error: ld returned 1 exit status
    

      这个地方的报错我百度了很多,虽然有很多博文讲诉,但是均没有解决我的编译报错问题,不知道这些转发的博主们都有没有实测过,反正百度了很多,大都是八九不离十的重复,我几乎都尝试过,都没有解决我的编译报错问题,但可以肯定的是      这个目录下的 /usr/lib/i386-linux-gnu/libX11.so 库版本或者路径没有对应上,解决我报错的方法如下:

    1 sudo apt-get install libglu1-mesa-dev -y

       或者:sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

     最后开始真正的编译把

      进入你的安卓代码目录:source ./build/envsetup.sh

                  

       lunch 选择 full-eng

                  

       选择1就 OK 了

                  

       make -j 编译你的代码把,我这里给我的虚拟机配置的是8线程,所以我就用 -j8来编译了,具体 -j 多少要看你为你的虚拟机分配了几核几线程

               

      编译成功后,就可以看到你的安卓代码目录下多了一个 out/ 目录了,里面会有一个 system.img 了,可以烧录到开发板中了

     

      版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2020-06-08,13:19:31
      作者By-----Reverse-xiaoyu----博客园

  • 相关阅读:
    SmartBear正式发布LoadComplete
    CGI, mod_perl, PHP, JSP性能比较
    LoadRunner测试Socket
    性能测试基本功 什么是软件性能
    性能测试基本功 Centos5.5下安装LAMP
    如何聘用优秀的性能测试工程师?
    Spotlight For Oracle使用说明
    SmartBear推出新产品LoadComplete
    LNMP安装
    测试网站性能的在线服务(性能测试云)
  • 原文地址:https://www.cnblogs.com/Reverse-xiaoyu/p/13063247.html
Copyright © 2011-2022 走看看