SQLite的am335x移植
[ 2016-1-8 16:18:00 | By: zxgbb ]
 

最近学习了sqliteam335x移植,根据自己在该过程中出现的问题,做了小结,以备后续使用。

一、准备工作——环境介绍

1、  主机环境:Ubuntu10.04

2、  交叉编译工具:arm-linux-gnueabihf-gcc(/home/am335x/linux-devkit/sysroots/i686-linux/bin/)主要确保在该目录下能找到你的编译器,另外该编译器要和开发板所使用的编译器一样,否则不兼容,会报错。

3、  软件包:sqlite-autoconfig-3090200.tar.gz

4、  sqlite-autoconfig-3090200.tar.gz解压到主机的/home/user(可以指定任何你想存放的目录,这个目录用来存放编译后产生的所有文件)

 

二、移植步骤

1、  配置SQlite

源文件解压后产生sqlite-autoconfig-3090200文件夹,在该文件夹下进行配置,主要是交叉编译器的指定、编译文件路径的指定、创建Makefile文件等。在终端里运行如下命令:

#mkdir sqlite_install //sqlite-autoconfig-3090200文件夹下创建安装目录;

#./configure

–prefix=/home/user/sqlite-autoconfig-3090200/sqlite_install –host=arm-linuxgnueabihf  CC=/home/am335x/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-gcc

注:以上命令为一条。

–prefix一行是指定的安装目录;

--host一行指明运行的平台;

配置参数CC指明交叉编译器的路径;

注:要根据自己实际情况进行配置。

2、  编译

配置完成后,需要修改Makefile文件和config.log文件中的错误,不知道其他版本是否需要修改。在这两个文件中定位-DPACKAGE_STRING=\”sqlite\ 3.9.2\”,在sqlite\后有个空格没有删除,一定要将这两个文件中此处的空格删除,虽然编译没有出错,但拷到开发板上后会出现如下错误:line1: syntax error : unexpected “(“(expecting)”)”

此时在终端执行make,完成对安装程序的编译。

3、  安装

执行make install命令,结束后在sqlite-autoconfig-3090200/sqlite_install目录下可以看到

生成了libbinincludeshare四个文件夹。Bin目录下是可执行文件sqlite3lib目录下是编译生成的库文件;包括共享库和静态库;share目录下是帮助文档man

4、  “瘦身”

可以通过file命令来查看各个文件的信息。刚生成的bin目录下和lib目录下的文件较大,有很多无用信息,所以需要进行“瘦身”,这样也不会占用开发板太大的空间。

/home/user/sqlite-autoconfig-3090200/sqlite_install/bin/目录下对sqlite3进行“瘦身”:/home/am335x/linux-devkit/sysroots/i686-arago-linux/usr/bin/arm-linux-gnueabihf-strip sqlite3

回车后就会看到sqlite3可执行文件从2.5M大小变为496K;使用该方法对lib目录下的libsqlite3.so.0.8.6进行“瘦身”。

5、  移植

(1)、将sqlite3libsqlite3.so.0.8.6文件分别拷贝到开发板/usr/bin/usr/lib目录下。

(2)、创建共享库的软链接

在开发板/usr/lib/文件夹下进行如下操作:

#ln –s libsqlite3.so.0.8.6 libsqlite3.so.0

#ln –s libsqlite3.so.0 libsqlite3.so

可以执行如下命令进行查看:#ls –l||grep sqlite

(注:软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息)

6、  测试

/usr/lib/目录下执行:sqlite3,出现错误:

sqlite3error while loading shared libaries :libreadline.so.5:can not open shared object No such file or directory;根据提示,需要找到libreadline.so.5.2文件,因为libreadline.so.5是由libreadline.so.5.2进行软链接得到的。在Ubuntu虚拟机中找到该文件(存于:/am335x/linux-devkit/sysroots/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi/usr/lib/中找到)

拷到开发板上后进行软链接操作:

#ln –s libreadline.so.5.2 libreadline.so.5

#ln –s libreadline.so.5 libreadline.so

 

执行sqlite3后又出现错误,提示找不到libncurses.so.5libtinfo.so.5;根据相应的提示返回虚拟机找到文件,拷到开发板上后,进行如上的软链接,执行sqlite3,出现:

#sqlite3

SQlite version 3.9.2 2016-01-05 18:31:45

Enter “.help” for usage hints.

Connectd to a transient in-memory database.

Use “.open FILENAME” to reopen on a persistent database.

sqlite>

sqlite在等待输入命令…………

自此,才算真正完成了sqlite3的移植工作。

如有错误,欢迎指正。

 
 
  • 标签:sqlite 移植 瘦身 
    发表评论:
     

    时 间 记 忆
    <<  < 2016 - >  >>
    1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30
    31
    最 新 评 论
    最 新 日 志
    最 新 留 言
    搜 索
    用 户 登 录
    友 情 连 接


     
    天涯博客欢迎您!