LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1539|回复: 0

sqlite+ARM+uClinux移植

[复制链接]
发表于 2007-6-12 15:18:21 | 显示全部楼层 |阅读模式
第一步:       
  1. 使用交叉编译工具是:arm-elf-gcc/arm-elf-ar/arm-elf-ranlib
  2. 分别用于编译ojbect文件和将object文件打成uClinux需要的静态libsqlite3.a包,arm-elf-ranlib什么作用还不清楚。
复制代码

第二步:
  1.        
  2. 交叉编译sqlite3提供两种版本的Makefile, 一种是通过configure由系统自
  3. 动配置环境。选项-disable-tcl, -build=arm-linux等;另一种是由自己手动
  4. 配置,将样板Makefile.linux-gcc拷贝Makefile,然后做一些适合自己环
  5. 境的编辑。由系统自动配置的Makefile同时生成了动态库*.so和静态库*.a
  6. 而且分别为这两种包编译sqlite3可执行文件【分别位于.lib目录下和当前目录】
复制代码
第三步:
  1. 修改第二种做法的Makefile:
  2. BCC用于编译lemon,只有先编译成功lemon后,才能编译后面的src/*.c。由于lemon是需要在host机中运行,所以BCC我们不能改成交叉编译只能用gcc编译。TCC是用于交叉编译的编译选项,所以改动TCC选项:
  3. TCC = arm-elf-gcc -O6 -Wl,-elf2flt   //-elf2flt用于uClinux的BFLT格式
  4. AR = arm-elf-ar cr
  5. RANLIB = arm-elf-ranlib
  6. 因为在uClinux不支持动态库【需要动态分配程序的地址空间】和动态加载动态库【使用dlopen/dlsys/dlclose】,所以注释:
  7. #MKSHLIB = gcc -shared
  8. #SO = so
  9. #SHPREFIX = lib
  10. 以及加上一个宏定义【此宏定义用于sqlite的增强功能即动态的加载动态库,uClinux上不需要,所以需要定义该宏】
  11. OPTS = -DNDEBUG=1
  12. OPTS += -DHAVE_FDATASYNC=1
  13. OPTS += -DSQLITE_OMIT_LOAD_EXTENSION=1
  14. Gcc中条件编译只需加上-D后面跟宏定义即可。
复制代码
第四步:       
  1. 我们不需要TCL版本的sqlite所以去掉此功能,编辑main.mk
  2. 去掉LIBOBJ+=中的tclsqlite3.o
复制代码
第五步:
  1.        
  2. 上面成功后,用arm-elf-gdb【可以仿真ARM7和9系列】启动基于ARMoulator
  3. 的仿真环境
复制代码
运行:
  1. Welcome to
  2.           ____ _  _
  3.          /  __| ||_|                 
  4.     _   _| |  | | _ ____  _   _  _  _
  5.    | | | | |  | || |  _ \| | | |\ \/ /
  6.    | |_| | |__| || | | | | |_| |/    \
  7.    |  ___\____|_||_|_| |_|\____|\_/\_/
  8.    | |
  9.    |_|
  10. GDB/ARMulator support by <davidm@snapgear.com>
  11. For further information check:
  12. http://www.uclinux.org/
  13. Execution Finished, Exiting
  14. Sash command shell (version 1.1.1)
  15. sqlite> create table Lineup (int channelid, char lineupname);
  16. sqlite> insert into Lineup values (13, 'cctv-1');
  17. sqlite> insert into Lineup values (14, 'cctv-2');
  18. sqlite> select * from Lineup;
  19. 13|cctv-1
  20. 14|cctv-2
  21. sqlite>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表