大体上分为三个步骤:1.在虚拟机上配置交叉编译环境arm-linux-gcc;2、安装和配置在交叉编译环境下的sqlite3;3.通过nfs挂载测试程序。三个步骤都必须成功才行,才能配置成功。
1.在虚拟机上配置交叉编译环境
以Ubuntu13.0为例,我们找到光盘里面arm-linux-gcc的安装包,并把这个包导入Ubuntu虚拟机。导入的方法有很多,可以通过vm tools直接拖动,也可以用ssh导入,也可以通过vm自带的共享目录导入。这里介绍vm的共享目录。
点击vm->settings->options->Shared Folders
如图选择add,然后在文件
这样就可以了,共享文件夹就设置好了,打开终端,会在/mnt/hgfs目录下面看到共享文件夹。
设置完之后,我们把arm-linux-gcc的编译环境arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 拷到linux目录中去。
tar jxvf arm-linux-gcc-3.4.6-glibc-2.3.6.tar.bz2 解压出来,进入解压后的目录,里面会有:arm-linux include bin lib等等目录,把这些所有的东西拷贝到/usr/local/arm/2.95.3目录 下。
然后,修改环境变量,目的是能让终端找到arm-linux-gcc的安装目录,输入命令
vim /etc/profile ,在文件的最后一行加上:
exportPATH=$PATH:/usr/local/arm/2.95.3/bin
然后,使新的环境变量生效:source /etc/profile
查看环境变量是否设置成功:echo $PATH,如果有/usr/local/arm/2.95.3/bin,说明设置成功了。
到此,arm-linux-gcc交叉编译环境就搭建成功了。
2.安装和配置sqlite3
sqlite3官网提供了两种源代码的方式,一种叫作amalgamation,另外一种叫作autoconf,这两种源码包有点不一样。amalgamation的源码包是把sqlite的所有源文件都集成到了sqlite3.c这一个文件里面去,而且这个包只适合单独编译出一个shell版本的sqlite3,它并不会编译出linux里面常见的开发库(也就是基于sqlite3编写的软件必须要依赖的sqlite3库)。而autoconf版就很明显了,是使用linux上面常见的./configure make make install方式来编译sqlite3的,可以编译出所有需要的依赖库。虽然sqlite官方建议使用amalgamation包,但经过个人测试,使用autoconf的包对于sqlite开发者来说是必须的,对于ARM的交叉编译来说就更是如此了。
我们这里安装autoconf版本。解压该文件,进入目录,
执行完这三条,sqlite3就已经被默认安装到了/usr/local/bin里面去了,但是还没完呢,如果在终端直接执行一下sqlite3,多半会报错,类似于这样:
这个问题是因为ubuntu里面原来自带了一个老版的sqlite运行库,这个库由一个库文件和一个符号链接组成,位于/usr/lib/i386-linux-gnu目录,分别是libsqlite3.so.0.8.6和一个符号链接到它的libsqlite3.so.0,由于上面进行的autoconf包的sqlite3并不是静态编译,所以就会出现库不匹配的情况而程序拒绝执行的问题了。