加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite移植到arm(二)

发布时间:2020-12-12 20:24:30 所属栏目:百科 来源:网络整理
导读:虚拟机:RHEL 5 物理机:win7 arm:博创PXA270经典(s3c2410) 前几天已经在自己的虚拟机上跑起来了,今天成功在arm上移植成功。 (1)将虚拟机上/bin/sqlite3,/include/sqlite3.h,/lib/libsqlite3.so.0.8.6分别放到arm上的/bin,/lib下,sqlite3.h就随便放哪

虚拟机: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 = %sn",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-STATEMENTn",argv[0]);
    }
    rc = sqlite3_open(argv[1],&db);
     if( rc )
    {
         fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db));
         sqlite3_close(db);
    }
    rc = sqlite3_exec(db,argv[2],callback,&zErrMsg);
    if( rc!=SQLITE_OK )
     {
        fprintf(stderr,"SQL error: %sn",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.接着用查找命令:

4.会出现:

name = cyc
number = 1

这样,动态编译成功了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读