虚拟机:RHEL 5
物理机:win7
arm:博创PXA270经典(s3c2410)
前几天已经在自己的虚拟机上跑起来了,今天成功在arm上移植成功。
(1)将虚拟机上/bin/sqlite3 , /include/sqlite3.h , /lib/libsqlite3.so.0.8.6分别放到arm上的/bin,/lib下,sqlite3.h就随便放哪了。
(2)在把/bin/sqlite3放好后,运行:
chmod +x sqlite3 //给sqlite3赋予可执行权限。
然后:sqlite3,不过可能会出问题,那么,你必须将/lib/libsqlite3.so.0.8.6软连接为/lib/libsqlite3.so.0。
具体命令为:ln -s/lib/libsqlite3.so.0.8.6 /lib/libsqlite3.so.0
基本上到此就结束了,如果你想测试下,可以到网上下个代码,运行下就行了。
你也可以拿下面的代码测试:
#include <stdio.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]);
}
rc = sqlite3_open(argv[1], &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
}
sqlite3_close(db);
return 0;
}
1.必须先在虚拟机上交叉编译:
arm-linux-gcc -o test test_sqlite3.c -I /opt/build/include/ -L /opt/build/lib -lsqlite3
2.接着会出现test文件,将此文件放到arm上,运行:
./test xyz.db "create table tbl0(name varchar(10), number smallint);"
./test xyz.db "insert into tbl0 values('cyc', 1);"
3.接着用查找命令:
./test xyz.db "insert into tbl0 values('cyc', 1);"
4.会出现:
name = cyc
number = 1
这样,动态编译成功了。