换平台,换平台,痛苦的换平台。
chroot刚刚理解了。又来了ltib。开源世界的大侠们为了弄出个优秀的嵌入式Linux IDE,煞费苦心啊。
what is ltib?
The LTIB (Linux Target Image Builder) project is a simple tool that can be used to develop and deploy BSPs (Board Support Packages) for various target platforms. Using this tool a user will be able to develop a GNU/Linux image for their target platform.
上面是官方解释。实际上,ltib是一系列脚本和管理方法的集合。开发者可以将源代码或开源软件包配置,编译,部署和压缩,成为可以烧写到flash上的bootloader,kernel和root file system映像。而这一切作都是通过./ltib命令加选项加参数实现的。
前几天拿到了MPC837XERDB的一个开发板,配套光盘里面就有ltib。我在虚拟机上又装上了fedora4,因为ltib在fedora4以上还没得到验证,比如我在fedora12下install它就错误连篇。这样我的虚拟机就形成了fedora4,8,12和puppy四个操作系统的壮观场面。把光盘内容copy下来,install就可以了,要注意的是ltib必须在非root用户下使用。
install完成后,在/opt下生成了一个freescale文件夹。这就是我们的ltib工具集,它包括三部分:/ltib文件夹是ltib工具的相关工具集;/pkgs是源代码包,相当多的开源软件包,当然你也可以添加新的进去;/usr里面是编译器,已经默认装好了powerpc-linux编译器了。
install时,需要你指定路径或默认路径生成一个“ltib-mpc837xerdb-<date>”文件夹。<date>指版本,我的是20080626。这个文件夹应该理解为目标文件夹 。也就是说/opt/freescale工具就是针对这个文件夹操作的,生成的映像们也在这个文件夹里面。
在pkgs里面发现了个helloworld包,很简单,包含了hello.c,hellocpp.cpp和makefile。而代码内容就是打印一句hello world。我觉得这应该是ltib给出的用户程序的范例。那就拿它试一下吧。
首先,我在hello.c里加了打印一句test for ltib,如下:
#include <stdio.h>
int main()
{
printf("hello world\n");
printf("test for ltib\n");
return 0;
}
注意/opt/freescale/pkgs/helloworld-1.1.tar.gz是不能修改的,那么我修改的是哪里的hello.c呢?是/ltib-mpc837xerdb-20080626/rpm/BUILD/helloworld-1.1下的。也就是说,如果要修改那个软件包的代码,要先把它解压缩到/ltib-mpc837xerdb-20080626/rpm/BUILD下
用这个命令,例如解压缩helloworld-1.1.tar.gz
$./ltib -p helloworld -m prep
在修改这里的源代码。
然后可以编译,部署和压缩映像了,这部分可以参看文档。
一个源代码,今天改明天改,基本就乱了,所以ltib用了patch,源代码包(原始的)加上你的patch,就是你改过的源代码包了,比直接在源码包上改先进多了。
比如我对hello.c做的修改,用
./ltib -m patchmerge -p helloworld
命令,就会在/opt/freescale/pkgs下产生helloworld-1.1.tar.gz的patch,这次产生了helloworld-1.1-1270443668.patch,查看它的内容,如下
diff --exclude CVS -uNr helloworld-1.1/hello.c helloworld-1.1.modified/hello.c
--- helloworld-1.1/hello.c 2007-07-10 18:42:21.000000000 +0800
+++ helloworld-1.1.modified/hello.c 2010-04-05 13:00:16.000000000 +0800
@@ -3,5 +3,6 @@
int main()
{
printf("hello world\n");
+ printf("test for ltib\n");
return 0;
}
同时/ltib-mpc837xerdb-20080626/dist/lfs-5.1/helloworld/helloworld.spec文件也会被修改,增加了patch1的相关内容。