浅谈编译高通android5.1源代码

发布时间:2020-07-28 13:41:52 作者:yjq_120
来源:网络 阅读:2446

为什么会编译高通5.1源代码,原因很简单,因为公司做高通平台的手机,所以有必要编译下

Linux基础学习篇

1.常用指令

       ls 显示文件或目录

                     –l  列出文件详细信息

       l(list)   –a   列出当前目录下所有文件及目录,包括隐藏的a(all)

       mkdir 创建目录

                -p 创建目录,若无父目录,则创建p(parent)

                   -r 递归删除,可删除子目录及文件

                   - f 强制删除

2.系统管理命令

3.打包压缩相关命令

gzip: bzip2: tar: 打包压缩 -c 归档文件 -x 压缩文件 -z gzip压缩文件 -j bzip2压缩文件 -v 显示压缩或解压缩过程 v(view) -f 使用档名 例: tar -cvf /home/abc.tar /home/abc 只打包,不压缩 tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩 tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩 当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。

4.关机/重启机器

    shutdown

-r 关机重启

-h 关机不重启

     now 立刻关机

     halt 关机

     reboot 重启

5. Linux管道 将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。 例:grep -r "close" /home/* | more 在home目录下所有文件中查找,包括close的文件,并分页输出。

6. Linux软件包管理

dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。 比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。 sudo dpkg -i tree_1.5.3-1_i386.deb 安装软件 sudo dpkg -r tree 卸载软件 注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等; APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。 依然以tree为例 sudo apt-get install tree 安装tree sudo apt-get remove tree 卸载tree sudo apt-get update 更新软件 sudo apt-get upgrade 将.rpm文件转为.deb文件 .rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。 sudo alien abc.rpm

7.vi命令

环境配置篇

一、安装和配置虚拟机

  1. 安装virtualbox直接下一步就可以

  2. 配置虚拟机的参数如下硬盘300G+;内存8G+

  3. 安装ubuntu镜像

二、环境搭建(以Ubuntu 14.04为例)

1.安装openjdk $ sudo apt-get update $ sudo apt-get install openjdk-7-jre-headless $ sudo apt-get install openjdk-7-jre $ sudo apt-get install openjdk-7-jdk

2.安装所需要的包 $ 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

           如果用到SElinux时,有时也要安装 python-networkx 提示:如遇到安装问题,可以单个单个安装即可

三、编译(编译android原生代码可到android source这个网站,需要×××)

  1. source 整个工程

  2. ./go.sh

  3. 编译成功后进行打包make_unsparse_p_w_picpath.sh Android 编译系统(三)Main.mk分析

 

Main.mk分析

Main.mk主要包含如下几个部分的内容

1. SHELL设置

2. 编译环境配置

3. 编译环境检查

4. 包含必要的宏

5. 根据make参数设置编译时的变量

6. 包含需要编译的Android.mk

7. 设置编译系统Target:prerequisites 控制整个编译流程

下面对上面几点进行必要解释:

有了前面小节对Android编译系统架构的分析,如果需要修改Android编译系统,就可以不至于盲目找问题,修改代码了。今天分析下main.mk,看它能为我们Android编译提供什么有价值的信息,以及如何自己定制我们的Android编译系统。

Main.mk的第一句就根据ANDROID_BUILD_SHELL来包裹编译系统用到的Shell,如果我们不想使用bash,而想使用sh,那么就可以在它前面写上ANDROID_BUILD_SHELL := /bin/sh,或者在build/envsetup.sh中添加相关定义。

定义完SHELL之后,就是对MAKE_VERSION的检查,然后定义了默认的编译目标droid!

如果我们敲入make之后,不加任何参数,默认的目标就是droid。注意虽然后面的include $(BUILD_SYSTEM)/config.mk写在默认目标droid依赖之后,但其和之后的语句都是要执行的,这是Makefile的语法决定的。

后面会include config.mk cleanbuild.mk对编译系统进行必要的配置。后面就是对编译环境的检查,包括是否大小写敏感、路径检查、java版本检查、javac版本检查。Android对编译环境的检查如果符合条件,在下次编译的时候,不会再次进行检查。

检查完版本之后,会包含进definations.mk,如前所述,definations.mk中定义了很多编译系统中用到的宏,这些宏在编译时需要经常调用,因此在编译的很靠前的阶段,就将之包含了进来。

然后就是针对make时传入的编译类型(eng user userdebug showcommands等)进行编译配置,这些配置会影响到最终编译目标所包括的模块。对于eng user userdebug sdk win_sdk tests等编译目标的区别,读者可以通过查看main.mk的代码找出其中到底有什么不同。

此处略去部分部分不重要的内容,直接跳到

Ifeq($(SDK_ONLY),true)处,大概368行附近,这个判断语句一直到这个语句块结束,都是对subdirs变量的设置,subdirs变量决定了哪些子文件夹最终被编译。

在后面的subdir_makefiles变量的设置,决定了哪些Android.mk被编译。紧接着include $(subdir_makefiles)就会添加所有这些Android.mk文件的依赖。这其中包含了droid的依赖,后面我们会发现。

然后就会根据这些Makefile,找出所有需要编译的模块(module),以及进行必要的分类(eng_MODULES/debug_MODULES/tests_MODULES等、modules_to_check/modules_to_install等),用以区别对待。

紧接着是定义了一系列的隐含目标:prebuilt、all_copied_headers、files、checkbuild、ramdisk、systemtallball、userdatap_w_picpath、userdatatarball、bootimg、droidcore等。最重要的一点,是会发现droid依赖于droidcore,而droidcore依赖于

droidcore: files \

systemp_w_picpath \

$(INSTALLED_BOOTIMAGE_TARGET) \

$(INSTALLED_RECOVERYIMAGE_TARGET) \

$(INSTALLED_USERDATAIMAGE_TARGET) \

$(INSTALLED_FILES_FILE)


遇到的问题

1.编译时遇到提示不支持openjdk,只支持oracle jdk 解决方法:

从oracle官网下载jdk版本,以jdk-7u45-linux-x64.tar.gz

举例: sudo tar zxvf jdk-7u45-linux-x64.tar.gz -C /usr/lib/jvm

环境变量 sudo gedit /etc/profile export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_65

export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"

export PATH="$JAVA_HOME/bin:$PATH"

更改默认jdk

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_65/bin/java 300

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_5/bin/javac 300

sudo update-alternatives --config java 验证命令

java –version

2.编译时用./go.sh遇到以下提示out/target/...kill,更cpu有关

解决方法:用i7,16G的电脑即可

推荐阅读:
  1. 高通平台AT命令扩展
  2. 10. Gradle自身源代码编译流程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

源代码 详细信息 高通平台

上一篇:Python3和ssl实现加密通信功能的方法

下一篇:Openssl如何实现双向认证

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》