在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

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

【网络安全的神秘世界】搭建dvwa靶场

🌝博客主页:泥菩萨 💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 下载DVWA https://github.com/digininja/DVWA/blob/master/README.zh.md 安装DVWA 安装phpstudy https://editor.csdn.net/md/?articleId=1399043

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz