因为工作的关系需要用到ltib,但是现在的版本只能在ubuntu9.04上运行,freescale手册也明确的告诉我对多支持到11.10,不过后来经过努力还是成功运行在12.04server上了。总的来说安装过程还是比较麻烦的,但是一次解决后不存在后期使用的问题。
1.首先是准备环境:
修改visudo(ltib会提示)
jingyang ALL = NOPASSWD: /bin/rpm, /opt/freescale/ltib/usr/bin/rpm
安装依赖包
sudo aptitude -y install gettext libgtk2.0-dev rpm bison m4 libfreetype6-dev
sudo aptitude -y install libdbus-glib-1-dev liborbit2-dev intltool
sudo aptitude -y install ccache ncurses-dev zlib1g zlib1g-dev gcc g++ libtool
sudo aptitude -y install uuid-dev liblzo2-dev
sudo aptitude -y install tcl dpkg
对于server版用户来说,只安装这些就足够,但是要仔细检查安装是否成功,否则会影响以后的安装。
2.执行./ltib -m config时遇到第一次报错:
zlib 0 not installed
这是环境检查错误,没有找到zlib。虽然我们已经安装过zlib1g,但是ltib检查的是/lib/libz.so(12.04把GNU库都整理到/lib/i386-linux-gnu/),所以只需要从/lib/i386-linux-gnu/libz.so.1链过去,后面还有这类问题也是按照这个方法解决。
3.编译工具lkc-1.4错误:
提示信息
gcc -lncurses mconf.o zconf.tab.o lxdialog/lxdialog.a -o mconf
lxdialog/lxdialog.a(checklist.o): In function `print_item':
checklist.c:(.text+0x2e): undefined reference to `wmove'
checklist.c:(.text+0x4a): undefined reference to `waddch'
checklist.c:(.text+0x73): undefined reference to `wmove'
checklist.c:(.text+0xc4): undefined reference to `wprintw'
checklist.c:(.text+0xef): undefined reference to `wprintw'
这个问题看似是少安装了ncurses库,其实是lkc的makefile有问题,这里使用freescale社区的解决方法
帖子地址:https://community.freescale.com/thread/117194
这个patch修正了lkc和sparse两个问题,所以建议使用。
打过补丁删除/opt/freescale/ltib/usr/src/rpm/BUILD/lkc-1.4继续
4.找不到types.h,问题和找不到zlib一样,从/usr/include/i386-linux-gnu/sys/types.h连接过去就行
再次删除lkc然后继续。
4.这个时候应该可以看到menuconfig界面了,远程终端显示问题就改一下终端模式为xterm。
5.配置完开始正式编译前还有一个问题要解决,如果直接编译会看到这个错误
/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find /lib/libc.so.6
/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find /usr/lib/libc_nonshared.a
/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/../lib/gcc/arm-fsl-linux-gnueabi/4.6.2/../../../../arm-fsl-linux-gnueabi/bin/ld: cannot find /lib/ld-linux.so.3
这个错误看似又是找不到目标板库文件,但检查后发现库在,cat ltib/rootfs/usr/lib/libc.so看到里面其实只是是路径,问题是原因是生成这些文件时脚本使用了file命令
@ARGV = grep { `file $_` =~ m,ASCII C program text, } @ARGV;
exit(0) unless @ARGV;
$^I = ".bak";
while(<>) {
s,[\S/]+/,,g if m,^GROUP,;
print;
}
解决的办法是卸载file命令,重新安装file-4.26.tar
安装后测试
file rootfs/usr/lib/libc.so
ASCII C program text
识别出这个说明成功。
到这里可以开始编译目标板文件了。如果执行了所有步骤任然无法通过编译,可以尝试完全卸载ltib,然后重新安装。