在ubuntu12.04.1LTS上搭建freescale iMX6开发板sabresd_6dq编译环境

本文主要是介绍在ubuntu12.04.1LTS上搭建freescale iMX6开发板sabresd_6dq编译环境,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者: 大桥++ 2013年9月6日, 若需转载,请注明出处。

     并不像ubuntu10.04LTS 或 11.04那样符合google或freescale的编译环境好配置,在ubuntu12.04.1LTS 64位版本上需要多费些时间和精力。因此记下安装过程,便于以后参考。
     我们的目标是配置freescale开发板sabresd_6dq的android 4.2.2r1的编译环境。
     硬件:DELL R720服务器 , Intel(R) Xeon(R) CPU E5-2690 * 2颗, 内存32GB, 2T硬盘
     ubuntu与R720服务器可能有兼容性问题,需要在电源管理中把BIOS 的 power management设置为maximum performance, 同时禁用C-State。

一、安装ubuntu12.04 LTS版本
下载光盘ISO,安装

二、安装JAVA环境
从oracle官方下载 jdk-6u39-linux-x64.bin, 注意一定是java6比如6u39, 64位版本
#cp jdk-6u39-linux-x64.bin /opt/
#cd /opt/
#chmod +x jdk-6u39-linux-x64.bin
#tar zxvf jdk-6u39-linux-x64.bin
安装后生成/opt/jdk1.6.0_39目录
配置环境变量
cat setjavaenv.sh
#set java environment 设置JAVA的环境变量
export JAVA_HOME=/opt/jdk1.6.0_39
export JRE_HOME=/opt/jdk1.6.0_39/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

三、安装GCC4.4.7 (旧版本)

如果编译时提示 make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1  ,可能是gcc版本太高。

在ubuntu12.04下编译android时,若出现如此错误,那是因为gcc版本太高。需要装旧的4.4版本

通过gcc -v命令可以查看当前gcc版本,若是4.6,需要重装4.4。


安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

装完后在/usr/bin目录下

$ ls -l gcc*

lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

sudo mv gcc gcc.bak

sudo ln -s gcc-4.4 gcc

 同理

ls -l g++*

lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

需要将g++链接改为g++-4.4:

/usr/bin$ sudo mv g++ g++.bak

/usr/bin$sudo ln -s g++-4.4 g++


再查看gcc和g++版本号:gcc -v和g++ -v均显示gcc version 4.4.7,说明gcc 4.4安装成功。

四、 安装各种包

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386(与官方的命令相比,我删除了openjdk的安装包)

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so(可不装)


五、编译过程
此部分参照freescale官方提供的手册android_jb4.2.2_1.0.0-ga_doc 目录下的 《Androi_User_Guilde.pdf》
下面有几个要点要注意的
1) 官方源码 google 4.4.2 r1
先把google官方源代码下载下来,一定要选 4.2.2 r1分支。过程比较长,大约要几个小时到几天不等,视网络情况。

2) 内核 kernel
 把freescale的kernel_imx使用git clone下来, 一定最后要git checkout jb4.2.2_1.0.0-ga, 然后拷贝到android源码相对根目录下。不要改文件夹名。

3) 引导 uboot
把freescale的uboot_imx使用git clone下来,一定最后要git checkout jb4.2.2_1.0.0-ga, 然后拷贝到bootable/bootloader/下。

4) patch(补丁)
安装freescale补丁source /opt/android_jb4.2.2_1.0.0-ga_source/code/jb4.2.2_1.0.0-ga/and_patch.sh
时间比较长,大约要20分钟

5) 设置环境变量
a. 设置编译缓存,这样可以加快编译速度
export USE_CCACHE=1
export CCACHE_DIR=~/ccache/.ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G

b. 设置java环境变量
#set java environment 设置JAVA的环境变量
export JAVA_HOME=/opt/jdk1.6.0_39
export JRE_HOME=/opt/jdk1.6.0_39/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

c. 设置android编译时环境变量 source build/envsetup.sh
为了方便,把以上写成脚本
setmyenv.sh 一次执行

6) 编译过程
a. lunch 选一下编译目标,这里选12. sabresd_6dq-user
b. make编译。可以make -j32, 32表示32线程,如果你用台式机intel的双核, 最好用make -j4。
   make 理论上可以直接把uboot, kenel, andorid 全部自动化编译,但是经过实践发现,编译出的uboot.bin是有问题的,不能正常启动。推测可能是freescale配置的问题。解决方案是:先make全编,再进uboot_imx单独编译uboot,产生出的bin就是正确的了。编译uboot的过程详见《Androi_User_Guilde.pdf》的3.4章节。


五、编译android源码时可能遇到的问题
1. 提示缺少mkimage
有2个办法:
1) 单独编译uboot,可以生成mkimage,然后指定mkimage所在的路径,便于编译时寻找
2) apt-get install uboot-mkimage 直接网络安装即可

2. lzo1x.h问题

lzo/lzo1x.h: No such file or directory

try:
sudo apt-get install liblzo2-dev

3. UUID问题

fatal error: uuid/uuid.h: No such file or directory  

这个是因为没安装uuid软件开发包导致的,ubuntu系统下可以使用命令sudo apt-get install uuid-dev在线安装,安装成功后,重新编译即可



找不知道UUID 那个问题,你可以装一个 32位的uuid   apt-get install uuid:i386, 然后再做个软连接: sudo ln -sf /lib/i386-linux-gnu/libuuid.so.1 /usr/lib/libuuid.so 就可以过了

4.  multilib 问题

g++: g++: selected multilib '32' not installed  

try:

sudo apt-get install g++-multilib
sudo apt-get install libc6-dev ia32-libs lib32ncurses5-dev x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils
sudo apt-get install g++-4.4-multilib (一开始着一条忘了试验了,很重要)

5. 仍报multilib及mkfs.ubifs失败
如果仍然出现这个提示

make: *** [out/host/linux-x86/obj/EXECUTABLES/mkfs.ubifs_intermediates/mkfs.ubifs] Error 1

可以参考以下步骤尝试:

1)   apt-get install liblzo2-2 --- 无效

2) apt-get install liblzo2-dev:i386 --无效

3)apt-get install liblzo-dev:i386  -- 无效

4)apt-get install liblzo2-2:i386

5)参考 (http://www.tuicool.com/articles/V3IV73)

sudo ln -s /usr/lib/i386-linux-gnu/liblzo2.so.2 /usr/lib/liblzo2.so

set LD_LIBRAY_PATH=/usr/lib/ 

无效

6)sudo apt-get remove liblzo2-dev liblzo2-2 -- 无效
7)  sudo apt-get install g++-4.4-multilib

成功!

编译好后会在out/target/product/sabresd_6dq 下生成我们需要的 boot.img, system.img userdata.img等。但uboot.bin由于freescale配置的bug, 并不是我们想要的,需要单独进uboot_imx目录进行手动编译。

六、 其它配置及注意事项
1. root密码要有一定的复杂度,以防在公网IP上被攻击
2. 确认安装sshd 为每个人创建user,登录主机编辑,编译

这篇关于在ubuntu12.04.1LTS上搭建freescale iMX6开发板sabresd_6dq编译环境的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/674901

相关文章

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i