Android4.4编译环境折腾记

题记:感觉是时候写点什么了=_=!

第一次安装了ubuntu14.04.5,官网下载的iso,官网下的jar,编译android4.x需要安装jdk6,更高的版本会有问题,baidu到很多搭建环境的步骤,这个不多说,在win7下使用EasyBCD引导安装的ubuntu,1TB硬盘果断装了双系统,事实证明没删掉win7是个多么明智的决定,在jdk方面,android4.4比4.0要多配置一个javap,其他都一样

 1 update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.6.0_43/bin/java" 1
 2 update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.6.0_43/bin/javac" 1
 3 update-alternatives --install "/usr/bin/javadoc" "javadoc" "/usr/lib/jvm/jdk1.6.0_43/bin/javadoc" 1
 4 update-alternatives --install "/usr/lib/mozilla/plugins/libjavaplugin.so" "mozilla-javaplugin.so" "/usr/lib/jvm/jdk1.6.0_43/jre/lib/amd64/libnpjp2.so" 1
 5 update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.6.0_43/bin/javaws" 1
 6 update-alternatives --install "/usr/bin/javap" "javap" "/usr/lib/jvm/jdk1.6.0_43/bin/javap" 1
 7 update-alternatives --install "/usr/bin/jar" "jar" "/usr/lib/jvm/jdk1.6.0_43/bin/jar" 1
 8
 9 # Choose the java you installed as default
10 update-alternatives --config java
11 update-alternatives --config javac
12 update-alternatives --config javadoc
13 update-alternatives --config mozilla-javaplugin.so
14 update-alternatives --config javaws
15 update-alternatives --config javap
16 update-alternatives --config jar

接下来就是安装库文件了,库文件不能少,不然会报错缺少xxx中断编译,这个比较好处理,缺啥apt-get啥,但是还是在事先就全部安装好,这编译一次4.4也不容易,好几个小时呢

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

但是!!由于我是编译公司已有的源码,并不是原生系统源码,报错了,第一次是有个文件没有自动生成!!一个REVISION的变量undefined,于是找到报错的文件一个一个defined,但是!!!公司老大的电脑能编译通过,自动生成的ver.h文件里面包含了REVISION变量的定义,这就有意思了,于是跑到到老大电脑上一查jdk,ubuntu,gcc,g++等版本,jdk有小版本的不同,但这个应该不是关键,ubuntu都是14.04的,gcc/g++都是4.8.4,也就是ubuntu14.04自带的编译器,然后还有交叉编译器,这个在源码中包含了arm-linux-gcc,版本肯定是一样的,后来碰到有大神说是gcc的版本太高了,可问题是别人的gcc也是4.8啊为什么就不报错!!!心塞塞。。。改完了这个undefined error,编译继续,然后碰到了更多的undefined。。。

比如plural-exp.h文件中的# define PLURAL_PARSE __gettextparse报conflicting types错误

 1 In file included from ../../../binutils-gdb/intl/plural.y:35:0:
 2 ../../../binutils-gdb/intl/plural-exp.h:102:23: error: conflicting types for
 3 ‘libintl_gettextparse‘
 4 # define PLURAL_PARSE libintl_gettextparse
 5                        ^
 6 ../../../binutils-gdb/intl/plural.y:40:25: note: in expansion of macro
 7 ‘PLURAL_PARSE‘
 8 # define __gettextparse PLURAL_PARSE
 9                          ^
10 plural.c:185:5: note: in expansion of macro ‘__gettextparse‘
11 int __gettextparse (void);
12      ^
13 ../../../binutils-gdb/intl/plural-exp.h:102:23: note: previous declaration
14 of ‘libintl_gettextparse‘ was here
15 # define PLURAL_PARSE libintl_gettextparse
16                        ^
17 ../../../binutils-gdb/intl/plural-exp.h:114:12: note: in expansion of macro
18 ‘PLURAL_PARSE‘
19 extern int PLURAL_PARSE PARAMS ((void *arg));
20             ^
21 ../../../binutils-gdb/intl/plural-exp.h:102:23: error: conflicting types for
22 ‘libintl_gettextparse‘
23 # define PLURAL_PARSE libintl_gettextparse
24                        ^
25 ../../../binutils-gdb/intl/plural.y:40:25: note: in expansion of macro
26 ‘PLURAL_PARSE‘
27 # define __gettextparse PLURAL_PARSE
28                          ^
29 plural.c:63:25: note: in expansion of macro ‘__gettextparse‘
30 #define yyparse         __gettextparse
31                          ^
32 plural.c:1130:1: note: in expansion of macro ‘yyparse‘
33 yyparse (void)
34 ^
35 ../../../binutils-gdb/intl/plural-exp.h:102:23: note: previous declaration
36 of ‘libintl_gettextparse‘ was here
37 # define PLURAL_PARSE libintl_gettextparse
38                        ^
39 ../../../binutils-gdb/intl/plural-exp.h:114:12: note: in expansion of macro
40 ‘PLURAL_PARSE‘
41 extern int PLURAL_PARSE PARAMS ((void *arg));
42             ^
43 plural.c: In function ‘libintl_gettextparse‘:
44 plural.c:1299:7: error: too few arguments to function ‘__gettextlex‘
45        yychar = yylex (&yylval);
46        ^
47 plural.c:64:25: note: declared here
48 #define yylex           __gettextlex
49                          ^
50 ../../../binutils-gdb/intl/plural.y:69:12: note: in expansion of macro
51 ‘yylex‘
52 static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
53             ^
54 ../../../binutils-gdb/intl/plural.y:178:29: error: ‘arg‘ undeclared (first
55 use in this function)
56       ((struct parse_args *) arg)->res = $1;
57                              ^

对没错,就是下面这个链接的错误!!!

http://stackoverflow.com/questions/33562051/conflicting-types-for-libintl-gettextparse

网上碰到这个错误的还真不多,可能是我运气真的太好,网上的解决方法是bison版本过低,升级到3.0就好了,屁啊。我的bison版本就是3.0.2,老大的环境也是3.0.2,自己找了好久不了了之。。。

于是,我默默的格式化了ubuntu系统的所在磁盘,这一删不得了,因为ubuntu与windows双系统是ubuntu在进行开机引导的,所以很正常的我开不了机了23333,没关系,我还可以进U盘的PE系统,咳咳,那个由于我是四五年前的时候给U盘做的启动盘了,又很正常的PE系统检测不到公司配的新电脑的硬盘!!这我一下子蒙圈了,网上一搜,原来是U盘PE系统太老了,还好!!我自己电脑还在旁边,于是又下个laomaotao啥的搞个最新的PE,终于能检测到硬盘啦,那然后是用U盘直接装Ubuntu呢还是继续win7引导,想想就我这运气还是继续靠win7吧,用分区工具重写了grub,这样又能开机啦

以前在学校的时候自己有个arm9的开发版,跑过android4.0的系统,编译环境还是ubuntu12.04,于是这次上官网下了个ubuntu12.04.5,烧写完毕,重启,哎呀我去又出大事了!!ubuntu开不了机了。报了个错网上一搜,说是thinkpad的bios的设置,不兼容的问题,具体错误不太记得了,但是!我还是坚持着又烧写了一次ubuntu12.04.2,注意这次是2!!!然后神奇的是居然进到桌面了,难道是自己在配置ubuntu12.04.5的时候出了岔子??哎不管了,2与5又有多大的差别呢,又不是14.04,用了会14.04还是觉得14.04好看很多啊!!!(谁让我是个看颜值的程序猿呢

这次用ubuntu12.04.2应该没啥问题了吧,源码download下来,环境轻车熟路的搭建好,开始编译!恩,REVISION undefined依然遇到,改过继续,这次碰到更奇葩的error了!!baidu/google都没几个人碰到的啊,compile_et: Couldn*t find compile_et*s template files

搜过来搜过去就只有这哥们的帖子(笑哭 http://tieba.baidu.com/p/3199034286按照回帖的做了,这库文件早就是最新的了,所以没用

没办法,只有看Makefile文件了,没有找到compile_et 的模板文件,是报错的prof_err.et还是啥??于是用命令compile_et prof_err.et 这个没报错啊,于是又编译一次,还是错了,看Makefile文件,哦!原来是compile_et --buildtree prof_err.et 这个命令,那确实,会报错,卡了好久,有次莫名其妙的vi了一下compile_et这个工具,工具???md,原来是shell脚本啊,只读的shell脚本啊,又是自动生成的shell脚本啊!没有后缀的compile_et我tm还以为是像windows里的exe工具一样呢,真是玩windows玩入魔了,这该死的定式思维,然后一个大写的绝对路径在里面躺着啊!!这路径还是老大的路径啊!!!这个文件就压根没有自动生成啊!!!这把我坑的我也不多说什么了,改掉!!!!编译终于通过了!!测试一下,没错!终于跑起来了!!开心啊,然后开开心心的回家了,第二天......

吃完早餐,开心的打开电脑,然后,1分钟过去了..5分钟过去了...10分钟过去了......ubuntu卡在了用户登录之前!!!ubuntu死掉了!!!我去!!!为什么!!!搞了个把小时没用,各种方法试过,没用!!决定重装ubuntu,老大一脸惊呆的问我,你又准备重装啊?我:...

然后心里还是默默的挂念着ubuntu14.04,然后又装了14.04,真是做死,豪无疑问又碰到了# define PLURAL_PARSE __gettextparse报conflicting types的错误,装的太多次都忘记14.04是这个错误了2333,真是为自己捉急!!无奈,为了节省时间只好装回12.04.2...把上次碰到的错误都解决掉,这次成功进入了系统!!!

然后开始了开发之旅

要编译android4.4吧,得有个IDE查看代码吧,无奈Source Insight没有linux版,网上好多都用的wine+Source Insight,于是我也这么干了,但是以本人4代i5,8GB缓存的thinkpad居然在使用SI的时候一卡一卡的,一直以为是自己哪个地方没配置好,来来回回把SI工程放在NTFS盘符下,放在EXT4盘符下,都是一样,没有任何优化的效果,无奈了好多天,这tm也太影响效率了啊,这和不能用有什么区别?!!excuxe me??好吧,换!!!!那么配置vim吧哈哈哈,打着正好学习使用vim各种插件的想法向着配置成新一代SI方向去干了!这样的教程网上是有一大把,我把差不多的都配置完了,使用 :TrinityToggleAll也是可以打开成SI界面一样的

具体方法如下:http://blog.csdn.net/nklinux/article/details/44501593

可能是自己没有配置对,而且按F8-12是木有用的,因为thinkpad在F8-12上写了快捷方式。。。

于是最后装了个VirtualBox。。。然后上win7哈哈哈哈,我也是没谁了,virtualbox不要装软件中心的,有问题,可能是版本太低了,我后来是卸载掉然后下了个5.0的deb装上了,到此,终于搞定!

经过这么长时间的折腾,以后在也不想再在环境这个问题上搞来搞去了。。。神烦!!系统的文件自己不知道的决不再乱动,万一就开不了机了。。。

时间: 2024-12-16 03:05:02

Android4.4编译环境折腾记的相关文章

在Ubuntu 12.04 64 位 搭载Android4.4源码编译环境

一.准备工作: (1)<a href = http://www.pc6.com/softview/softview_48354.html tiltle = “下载Vm10网址”>VMare Workstation 10</a> (2)<a href = http://releases.ubuntu.com/12.04/  tiltle = “下载Ubuntu12.04 64bit网址”>Ubuntu12.04 64bit</a> (3) <a href

ubuntu12.04下安卓编译环境搭建总结

前言: 因为工作需要,经常要编译安卓下的动态库,公司有已经搭建好环境的服务器,但是第一自己想自己搭建一下了解一个整个过程,另外,公司的服务器也经常出现问 题,导致编译不了,所以就想自己搭建环境.开始是在公司自己的电脑上装了一个unbuntu的虚拟机,然后在网上找了一个攻略,开始搭建环境.但是一直卡 在源码下载那一块,每次源码下载都出错,如后面问题1所描述.断断续续,都是工作之余抽空弄一弄,但是始终下载不成功,我以为是公司网络的问题,网络不稳 定,所以下载老失败.本来想多试几次,想想总有一次会下载

ubuntu12.04 安装android sdk /ndk/源码 编译环境

做android已经近5年了,期间android的各种环境都自己配过,自己是个想法比较多的人,各自神奇到想法都有,包括写博客,但是一直是没有具体落实...想法再多,不去努力实现也只能是想法了,今天准备从写博客这个小事开始做起,磨练自己到,不废话了,直接进入主题: 一.JDK(下载并安装jdk),注意事项如下: a.32位需要下32的,64位的也注意是下载64位的: b.配置环境变量: $ sudo gedit /etc/profile           在文件的末尾加上如下内容:       

详解 Windows 下 Eclipse CDT 配置 C/C++ 编译环境

其实 windows 下,C.C++ IDE 也不少,但许多IDE的 UI 和用户体验基本都停留在上个世纪,除了 eclipse CDT 和 visual studio,但后者现在是个巨无霸,安装文件都 3 个多G,而且这货安装容易删除难,但 eclipse CDT 就不一样了,熟悉 java eclipse 的同学能快速适应~ 1.Eclipse及CDT的安装 到Eclipse的官方网站http://www.eclipse.org上下载Eclipse. 离线安装CDT.CDT的全称是C/C++

使用docker创建aosp编译环境

如果只需要编译一个版本的aosp,那么如果在主机上架建环境即可,可写的程序如果要在各个aosp版本中编译,那在主机上架建多个aosp编译环境可以会比较麻烦,github上找到一个openstf用docker架建aosp环境的代码,地址:https://github.com/openstf/docker-aosp 创建Dockerfile aosp主要涉及三种环境jdk6,jdk7,jdk8,根据aosp的版本不同可以选择不同的Dockerfile FROM ubuntu:14.04 MAINTA

VIM大作战之C++简易集成编译环境(Windows篇)

一切都要从这篇文章说起 Vim 实在是精致独特得有点像个林妹妹.但谁要是希望家里也有个林妹妹,光把自家丫头照着绣像打扮打扮是不行的,必须从零开始养成一个.而且就算真能养出来个“天上掉下来”一般的可人儿,管家婆的位置仍然没她的份. ——<钗黛双收:若你也同Vim难割舍,却又看Emacs情切切> 那时候刚工作不久,有一次去一个搞嵌入式的同事工位上讨论一个bug,只见他操作一个界面简洁的文本编辑器,但是这个编译器似乎不简单,有文本高亮,有自动补全,还可以子窗口嵌套,更夸张的是,这个同事以打字的速度敲

OSX android 编译环境

1 安装Xcode MacPort 注:确定/opt/local/bin在/usr/bin之前,如果没有,执行以下命令,或者修改.bash_profile export PATH=/opt/local/bin:$PATH 2 通过MacPort安装make,git,GPG, 如果本地已经安装,或者版本已经比较新了,无需安装 sudo port install gmake libsdl git-core gnupg 3  关于make 3.82版本 make 3.82版本有bug,需要退回3.81

WebStorm 8.0安装LESS编译环境的教程

WebStorm是一个非常棒的Web前端开发编辑器,被程序猿们成为“最智能的JavaScript IDE”.对HTML5.Bootstrap框架.Node.js等都有完美支持.目前最新版本为WebStorm 8.0.x.下面就介绍一下如何在WebStorm 8.0安装LESS编译环境. 1.首先安装WebStorm 8.0 在官方下载并安装WebStorm 8.0.x,具体步骤就不说了,没什么特别之处. 2.安装NodeJs NodeJs官方版本有32位和64位,可以根据实际需要进行选择安装.

用Sublime Text2搭建VC编译环境

用惯了臃肿的VS2013,有时候想写个小项目,小测试程序,编辑浏览代码什么的不想 总打开它,于是我折腾了一下Sublime Text2 这款现代化高大上的强大代码编辑器,它的定位 在于绿色轻巧,速度快,且跨平台支持Win/Mac/Linux,支持32与64位,但它需要配合众多 的插件一起使用,所以比较适合喜欢折腾的人. 另外,Sublime Text2 通常用于前端开发,例如HTML,PHP神马的,亦或者是写些脚本神马的, 像Lua, Js之类的,但估计用它来写VC的还真不多,毕竟有VS这等便利