在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

相关文章

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次