SQLite3.3.6在ARM2410上的移植

    技术2022-05-11  12

    SQLite3.3.6在ARM2410上的移植 要将SQLite3.3.6移植到ARM2410开发板上,除了要有底层操作系统的支持外,还必须要有相应的交叉编译工具链。由于ARM2410开发板采用的是ARM-Linux作为底层操作系统,因此需要首先安装ARM-Linux工具链。 1.交叉编译环境建立: 拷贝cross-2.95.3.tar.bz2到/usr/local目录下并解压缩。 cp cross-2.95.3.tar.bz2 /usr/local/arm tar –jxvf cross-2.95.3.tar.bz2 2.编译SQLite-3.3.6 (1)在/root下建立目录sqlite,拷贝sqlite-3.3.6.tar.gz到该目录同时解压缩。 tar –zxvf sqlite-3.3.6.tar.gz (2)新建目录: cd /sqlite-3.3.6 mkdir build (3)修改配置文件 vi configure 修改以下几个部分: # if test "$cross_compiling" = "yes"; then # { { echo "$as_me:$LINENO: error: unable to find a compiler for building build tools" >&5 #echo "$as_me: error: unable to find a compiler for building build tools" >&2;} # { (exit 1); exit 1; }; } # fi #else # test "$cross_compiling" = yes && # { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 #echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} # { (exit 1); exit 1; }; } #else # test "$cross_compiling" = yes && # { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5 #echo "$as_me: error: cannot check for file existence when cross compiling" >&2;} # { (exit 1); exit 1; }; } 进入目录build: cd build ../ configure --disable-tcl --host=arm-linux 这样在build目录中就将生成Makefile和一个libtool脚本 (4)修改Makefile文件: cd build vi Makefile 将下面的这行 BCC = arm-linux-gcc -g -O2 改成: BCC = gcc -g -O2 将下面的这行: sqlite3$(TEXE): $(TOP)/src/shell.c .libs/libsqlite3.la sqlite3.h 改成: sqlite3$(TEXE): $(TOP)/src/shell.c .libs/libsqlite3.a sqlite3.h 我们都是将sqlite放到arm-linux的硬件板子上运行,所以我们一般将其编译成静态链接的形式。 保存Makefile文件后退出。 (5)编译: 执行make命令即可完成编译。 编译完成后,在build目录下生成许多.o和.lo文件。但最重要的时文件sqlite3。 file sqlite3 sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped 由此可知,此时生成的sqlite文件是还未strip过的。执行命令arm-linux-strip, 去掉其中的调试信息,这样文件将减少很多。 arm-linux-strip sqlite3 再次用file命令查看sqlite3的信息: file sqlite3 sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped 这就是在开发板上可以直接运行的可执行文件。 通过nfs将这些文件下载到开发板上。 需要注意: 拷贝是需要加上 –arf选项,因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的。 cp –arf libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6 /usr/lib cp sqlite3 /mnt/nfs (6)测试结果: chmod 777 sqlite3 编辑测试程序:test.c 编译:arm-linux-gcc test.c -L.libs -lsqlite3 –static arm-linux-strip a.out 将其下载到开发板上: 执行:a.out ex "select * from tbl" 

    最新回复(0)