i.MX6平台LTIB开发环境搭建与优化指南
1. LTIB开发环境搭建实战最近在调试Freescale E9开发板时遇到了LTIB编译环境搭建的各种坑。作为一款经典的嵌入式Linux镜像构建工具LTIB在i.MX6平台开发中扮演着重要角色。本文将详细记录在Ubuntu 12.04 64位系统上搭建LTIB环境的完整过程包含我踩过的所有坑和解决方案。1.1 环境准备与依赖安装首先需要准备以下基础环境Ubuntu 12.04 LTS 64位系统实测16.04/18.04也可用但需要额外调整Freescale官方BSP包L3.0.35_4.1.0_130816_source.tar.gz至少50GB可用磁盘空间编译过程会产生大量中间文件依赖包的安装是关键第一步我整理了一个自动化安装脚本#!/bin/bash # 基础编译工具链 sudo apt-get install -y gettext libgtk2.0-dev rpm bison m4 libfreetype6-dev sudo apt-get install -y libdbus-glib-1-dev liborbit2-dev intltool sudo apt-get install -y ccache ncurses-dev zlib1g zlib1g-dev gcc g libtool # 64位系统特殊依赖 if uname -a | grep -sq x86_64; then sudo apt-get install -y ia32-libs libc6-dev-i386 lib32z1 fi # 开发辅助工具 sudo apt-get install -y tcl dpkg asciidoc texlive-latex-base sudo apt-get install -y dblatex xutils-dev uuid-dev liblzo2-dev重要提示Ubuntu 12.04的官方源已不可用需要修改/etc/apt/sources.list为deb http://old-releases.ubuntu.com/ubuntu/ precise main restricted universe multiverse deb http://old-releases.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse1.2 BSP包安装与补丁处理解压BSP包后运行install脚本时会遇到两个典型问题tar zxf L3.0.35_4.1.0_130816_source.tar.gz cd L3.0.35_4.1.0_130816_source ./install问题1许可证协议确认失败 解决方法编辑install脚本找到交互确认部分改为自动接受# 修改前 # agree_license0 # while [ $agree_license -ne 1 ]; do # read -p Do you accept the EULA? [y/n] yn # case $yn in # [Yy]* ) agree_license1; break;; # [Nn]* ) exit 1;; # esac # done # 修改后 agree_license1问题2Ubuntu 12.04兼容性问题 需要应用社区补丁wget https://community.freescale.com/servlet/JiveServlet/downloadBody/93454-102-3-2834/ubuntu-ltib-patch.tgz tar -xzvf ubuntu-ltib-patch.tgz cd ubuntu-ltib-patch ./install-patches.sh /path/to/ltib2. LTIB编译配置详解2.1 关键配置步骤执行./ltib后进入配置界面针对E9开发板的推荐配置Platform选择Platform choice (Freescale iMX reference boards) ---处理器选择Selection (imx6q) --- # E9使用i.MX6 Quad核心开发板选择board (mx6q_sabresd) --- # 天嵌E9基于SabreSD设计文件系统配置File System Configuration --- [*] jffs2 root filesystem [*] tar.gz the root filesystem2.2 常见编译错误处理错误1rpm权限问题 解决方法配置sudo免密码sudo visudo # 在文件末尾添加 your_username ALL NOPASSWD: /usr/bin/rpm, /opt/freescale/ltib/usr/bin/rpm错误2头文件缺失 创建符号链接解决sudo ln -s /usr/include/x86_64-linux-gnu/sys /usr/include/sys错误3m4编译失败 临时解决方案编辑ltib目录下的config/platform/imx6q.profile注释掉以下内容#package: m4 # section: host # config: --prefix/usr3. 编译优化与输出处理3.1 加速编译过程预置软件包缓存cp L3.0.35_4.1.0_130816_source/ltib/* /opt/freescale/pkgs/ cd /opt/freescale/pkgs chmod a-x *启用ccache加速 编辑~/.profile添加export CCACHE_DIR/tmp/ccache export PATH/usr/lib/ccache:$PATH mkdir -p /tmp/ccache ccache -M 5G3.2 输出文件说明成功编译后生成的关键文件rootfs/boot/uImage- Linux内核镜像rootfs/boot/u-boot.bin- Bootloader镜像rootfs.jffs2- JFFS2格式根文件系统rootfs.tar.gz- 压缩包格式根文件系统文件路径结构示例/home/ltib/ ├── bin/ ├── dist/ ├── rootfs/ │ ├── boot/ │ │ ├── uImage │ │ └── u-boot.bin │ └── ... └── rpm/4. 开发实战技巧4.1 自定义软件包添加在LTIB中添加自定义软件包的步骤创建包目录结构cd /path/to/ltib mkdir -p pkgs/myapp编写spec文件模板pkgs/myapp/myapp.spec%define myapp_version 1.0 Name: myapp Version: %{myapp_version} Release: 1 License: GPL Group: Applications/System Source: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-build %description My custom application %prep %setup -q %build make %{?_smp_mflags} %install rm -rf %{buildroot} make install DESTDIR%{buildroot} %files %defattr(-,root,root) /usr/local/bin/myapp在ltib配置中启用自定义包 编辑config/platform/imx6q.profile添加package: myapp section: user config: --prefix/usr/local4.2 内核配置调整通过LTIB修改内核配置的特殊方法首先正常编译一次LTIB进入内核配置界面cd /path/to/ltib ./ltib -m kernelconfig保存配置后需要手动处理cp /path/to/ltib/build/linux-3.0.35/.config /path/to/ltib/config/platform/linux-imx6q.config注意直接修改内核配置可能会被LTIB覆盖建议通过profile文件进行配置5. 高级调试技巧5.1 网络文件系统(NFS)调试配置LTIB支持NFS根文件系统修改ltib配置./ltib -m config选择File System Configuration --- [*] nfsroot support () NFS server IP address (NEW) () NFS root path (NEW)开发板uboot参数设置setenv bootargs consolettymxc0,115200 root/dev/nfs ipdhcp nfsroot192.168.1.100:/path/to/nfsroot,v3,tcp saveenv5.2 交叉编译独立模块不使用LTIB编译单个驱动模块的方法准备环境变量export ARCHarm export CROSS_COMPILE/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-编译示例cd /path/to/module make -C /path/to/ltib/rpm/BUILD/linux-3.0.35 Mpwd modules6. 经验总结经过多次实践我总结了以下关键经验点目录权限问题LTIB运行时不要使用root账户/opt/freescale目录需要普通用户有写入权限网络问题处理编译前确保能访问外网部分包需要在线下载遇到下载失败时可手动下载后放入/opt/freescale/pkgs版本兼容性BSP版本必须与开发板配套工具链版本要严格匹配编译中断处理使用./ltib -m clean先清理检查磁盘空间是否充足至少保留10GB二进制文件位置最终生成的uImage和uboot在rootfs/boot目录文件系统镜像在ltib根目录这套环境搭建方法不仅适用于E9开发板也可作为其他i.MX6平台开发的参考。在实际项目中建议将成功编译后的整个/opt/freescale目录备份后续可直接复用避免重复配置。