以arm9开发板为例,如果想对开发板自带的文件系统进行更改,往往要对文件系统的源文件重新修改,然后再通过mkcramfs这个工具来再把改过的源文件变成.cramfs镜像文件。
本人是在做sqlite3的时候,想把sqlite3的库文件libsqlite3.so.0.8.6写入源文件系统的/lib目录中,这样就不需要把库文件放入可读写的区域而占用过多的可读写资源。
步骤如下:
1.在光盘里找到相应的文件系统源码,对文件系统解压
tar jxvf uptech-root.tar.bz2
注意,tar命令一定要在linux OS的文件目录下,不可以放到vm的共享文件夹下,如果是在共享文件夹下进行tar 操作,会提示tar: root/usr/bin/tftp: Cannot create symlink to `../../bin/busybox': Operation not supported 这个错误,这是因为windows和linux的目录类型不一样导致的。
2.解压完成后,会在当前目录下产生一个root的目录,cd root。里面有lib/目录。正常情况下,我们只需要将交叉编译过的sqlite3中的lib目录下的sqlite3.so.0.8.6复制到文件系统的lib下就可以了。但是,这个sqlite3.so.0.8.6往往会很大,写进去后烧写文件系统时会提示。。。too large这个错误。
解决方法,进入交叉编译过的sqlite3中的lib目录下cd /opt/sqlite3/lib 。输入命令:arm-linux-strip libsqlite3.so.0.8.6,这时会发现libsqlite3.so.0.8.6这个库比原来小了很多,这是因为