Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51758
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 98
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-18 20:33
文章分类
文章存档

2014年(4)

2013年(2)

我的朋友

分类: LINUX

2014-05-15 16:19:30

1.  运行环境:DB120路由器,即CPUMIPS架构6358OpenWRT环境下,生成一个要用到sqlite3数据库 API的应用程序MyDatabase

2.  交叉编译:

(1) sqlite3官网下载源代码,提取有用两个文件:sqlite3.hsqlite3.c;

(2) 在Ubuntu下搭建好mips的交叉编译环境:mips-openwrrt-linux- ;

(3) 生成sqlite3的动态链接库:输入以下命令


(4) 将其他应用程序MyDatabase.c与libsqlite3.so链接生成可执行文件:

(注释:-L表示需要链接的动态链接库的路径,./表示当前路径下,后面两个动态链接库是在系统默认路径下面)

(5)   将生成的MyDatabase可执行文件和动态链接库libsqlite3.so一起上传到DB120里面去,在OpenWRT环境下面运行我的应用程序MyDatabase(编译时链接动态链接库和程序运行时加载动态链接库不是一个概念)

如果直接在OpenWRT下运行该程序,会出现以下错误:

 

解决方法:将存放libsqlite3.so的文件路径(我这里是/tmp)加入到LD_LIBRARY_PATH:这个环境变量指示动态链接器可以装载动态库的路径。


但此种方法在路由器重启之后该环境变量就会消失。如果是通过CGI调用该可执行文件,CGI默认的加载动态链接库路径是/usr/lib,不能是其他路径!

(6)重新运行,成功!

阅读(6291) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~