分类: LINUX
2014-05-15 16:19:30
1. 运行环境:DB120路由器,即CPU为MIPS架构6358的OpenWRT环境下,生成一个要用到sqlite3数据库 API的应用程序MyDatabase
2. 交叉编译:
(1) sqlite3官网下载源代码,提取有用两个文件:sqlite3.h和sqlite3.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)重新运行,成功!