s3c6410下移植sqlite3.7.8
http://blog.chinaunix.NET/uid-30441-id-2133838.html
1、下载源代码http://www.sqlite.org/download.html
2、tar -zxvf sqlite-amalgamation-3.6.23.1.tar.gz
3、进入sqlite-3.6.23.1
4、mkdir build
5、cd build
6、../configure --host=arm-linux --prefix=/usr/local/sqlite3 注意:使用arm-linux-gcc 3.4.5时出现如下错误 checking for C compiler default output file name... configure: error: C compiler cannot create executables See `config.log' for more details.
怀疑没有写权限,使用如下配置通过 sudo ../configure --host=arm-linux --prefix=/usr/local/sqlite3 移植到开发板上无法运行,使用下面配置 ../configure --host=arm-unknown-linux-gnu --prefix=/usr/local/sqlite3
7、make
出现问题: arm-none-linux-gnueabi-gcc: 3.6.23.1": No such file or directory < command-line>: warning: missing terminating " character ^Cmake: *** [sqlite3.lo] 错误 1
解决:
Makefile中 -DPACKAGE_STRING=\"sqlite\ 3.6.23.1\" 改为: -DPACKAGE_STRING=\"sqlite_3.6.23.1\"
8、sudo make install
出现问题: arm-linux-ranlib /usr/local/sqlite3/lib/libsqlite3.a ./libtool: line 6619: arm-linux-ranlib: command not found make[1]: *** [install-libLTLIBRARIES] 错误 127 make[1]:正在离开目录 `/work/development/sqlite/sqlite-3.6.23.1/build' make: *** [install-am] 错误 2
原因:root权限的时候没有设置arm-linux 的PATH
解决: su 根用户登录 export PATH=$PATH:/work/tools/arm/bin
make install
9、cd /usr/local/sqlite3
10、cp -arf bin include lib /work/nfs_root/sqlite/ 复制到nfs共享文件夹下
11、mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 192.168. 0.128:/work/nfs_root /mnt/nfs/ mount nfs文件系统
12、cp /mnt/nfs/sqlite/bin/* /usr/bin/ mkdir /usr/lib cp -arf /mnt/nfs/sqlite/lib/* /usr/lib/ mkdir /usr/include cp /mnt/nfs/sqlite/include/* /usr/include/
13、开发板上创建数据库 # /usr/bin/sqlite3 demo SQLite version 3.6.23.1 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table tbl_demo(uid int, uname varchar(20)); sqlite> insert into tbl_demo values(1, 'jimmy'); sqlite> insert into tbl_demo values(2, 'srp'); sqlite> .quit
14、编写测试程序test.c
- #include <stdio.h>
- #include <stdlib.h>
- #include "sqlite3.h"
- static int callback(void *NotUsed, int argc, char **argv, char **azColName)
- {
- int i;
- for(i=0; i<argc; i++) {
- printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
- }
- printf("\n");
- return 0;
- }
- int main(int argc, char **argv)
- {
- sqlite3 *db;
- char *zErrMsg = 0;
- int rc;
- if( argc!=3 ){
- fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
- exit(1);
- }
- rc = sqlite3_open(argv[1], &db);
- if( rc ){
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- sqlite3_close(db);
- exit(1);
- }
- rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
- if( rc!=SQLITE_OK ){
- fprintf(stderr, "SQL error: %s\n", zErrMsg);
- sqlite3_free(zErrMsg);
- }
- sqlite3_close(db);
- return 0;
- }
#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h" static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
int i; for(i=0; i<argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
} printf("\n"); return 0;
} int main(int argc, char **argv)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc; if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
} rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
} rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} sqlite3_close(db); return 0;
}
15、编译 arm-linux-gcc test.c -I /usr/local/sqlite3/include -L /usr/local/sqlite3/lib -lsqlite3 -o test
16、将test拷贝到开发板与数据库demo同一个目录下 sqlite demo test
17、运行 # ./test demo "select * from tbl_demo" uid = 1 uname = jimmy
uid = 2 uname = srp
18、sqlite移植成功
注意: #gcc test.c -I /usr/local/sqlite3/include -L /usr/local/sqlite3/lib -lsqlite3 -o test
/usr/bin/ld: skipping incompatible /usr/local/sqlite3/lib/libsqlite3.so when searching for -lsqlite3 /usr/bin/ld: skipping incompatible /usr/local/sqlite3/lib/libsqlite3.a when searching for -lsqlite3 /usr/bin/ld: cannot find -lsqlite3 collect2: ld 返回 1
原因:sqlite是使用arm-linux-gcc编译的,所以使用的gcc与arm-linux-gcc不兼容
s3c6410下移植sqlite3.7.8的更多相关文章
- [OpenCV][ARM9下移植OpenCV]
[OpenCV][ARM9下移植OpenCV] 安装环境 宿主机: Red Hat Enterprise Linux Server 6.3 开发板: mini2440 相关软件: cmake-3. ...
- linux下安装sqlite3
1.介绍:sqlite3是linux上的小巧的数据库,一个文件就是一个数据库.2.安装: 要安装sqlite3,可以在终端提示符后运行下列命令: sudo apt-get install sqli ...
- 如何移植sqlite3到嵌入式平台
本人也时常看其他人的blog,搜索资料的目的是尽快解决当前的问题,例如如何移植一个ssh,尽快要明白所需的东西,方能移植完成. 移植sqlite3的步骤如下: 1. 到官方网站下载指定的源码包:htt ...
- 成功移植SQLite3到ARM Linux开发板
SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...
- S3C6410板子移植 Android2.2
一:Android简介 1.什么是Android: Android是一种基于linux的自由及开放源代码的操作系统,主要适用于移动设备,如智能手机和平板电脑,是由google公司和开放手机联盟领导和开 ...
- linux(TINY6410)下移植boa服务器
今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包 我这里用的是 boa-0.94.13.tar. ...
- ubuntu下基于sqlite3后台的php环境的搭建
最近准备把公司的服务器换成linux 数据库sqlite3 搭建过程记录如下: 1 sqlite3安装.. apt-get install sqlite 2.PHP服务器搭建. apt-get ins ...
- 【解决】Django下使用sqlite3的相关问题
最近在玩Django,想用它写一个很小很小的项目,Django自带数据库sqlite3,本来项目也小,我就用它了. 玩意虽小,东西却不是那么好用的. 首先,在项目中建立模型,一个例子是这样的: cla ...
- 四种数据持久化方式(下) :SQLite3 和 Core Data
在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...
随机推荐
- Impala:新一代开源大数据分析引擎--转载
原文地址:http://www.parallellabs.com/2013/08/25/impala-big-data-analytics/ 文 / 耿益锋 陈冠诚 大数据处理是云计算中非常重要的问题 ...
- BZOJ3714 PA2014Kuglarz(最小生成树)
每次询问所获得的可以看做是两个前缀和的异或.我们只要知道任意前缀和的异或就可以得到答案了.并且显然地,如果知道了a和b的异或及a和c的异或,也就知道了b和c的异或.所以一次询问可以看做是在两点间连边, ...
- OSPF与Vlan间通信综合实验小结与端口隔离
总结 本实验模拟实际工作环境的网络拓扑结构,至此终于理解了一部分的配置思路: 一.三层交换机连接路由器的端口配置 图中GE0/0/4应该是配置成access类型,这个时候应该是不带vlan标签的. ...
- Django对应的路由名称
1. 名字很长,修改起来很麻烦 2.Django提供了一种方法 在urls.py中修改了名字以后,html中会自动对应做修改.这样提交表单的时候就会比较方便了.跳转到写死的某个URL. 3.根据名字i ...
- [AT2172] [agc007_e] Shik and Travel
题目链接 AtCoder:https://agc007.contest.atcoder.jp/tasks/agc007_e 洛谷:https://www.luogu.org/problemnew/sh ...
- 【BZOJ1226】学校食堂(动态规划,状态压缩)
[BZOJ1226]学校食堂(动态规划,状态压缩) 题面 BZOJ 洛谷 题解 发现\(b\)很小,意味着当前这个人最坏情况下也只有后面的一小部分人在他前面拿到饭. 所以整个结果的大致顺序是不会变化的 ...
- 框架----Django之Form组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.小试牛刀 1.创建Form类 from d ...
- 【分块】【P2801】教主的魔法
Description 给你一个长度为 \(n\) 的序列,要求资瓷区间加,查询区间大于等于 \(k\) 的数的个数 Input 第一行是 \(n~,~Q\) 代表序列长度和操作个数 下面一行代表序列 ...
- 【数学】【P5077】 Tweetuzki 爱等差数列
Description Tweetuzki 特别喜欢等差数列.尤其是公差为 \(1\) 且全为正整数的等差数列. 显然,对于每一个数 \(s\),都能找到一个对应的公差为 \(1\) 且全为正整数的等 ...
- HDU--2363
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2363 分析:最短路+二分. #include<iostream> #include< ...