TA的每日心情 | 奋斗 2015-10-8 09:49 |
---|
签到天数: 430 天 连续签到: 1 天 [LV.9]以坛为家II
|
i.MX6开发板采用了飞思卡尔i.MX6四核处理器,大步迈入嵌入式linux——一款iMX6开发板简单介绍了上手体验。本文将阐述如何在MY-I.MX开发平台上运行最新版sqlite3并简单测试。
使用硬件
MY-I.MX6 Demo开发平台
使用软件
linux Mfgtools 串口软件。
正文
1. 源码下载
下载最新的源代码,这里下载的是Sqlite 3.8.5的版本。
https://www.sqlite.org/2014/sqlite-autoconf-3080500...
2. 交叉编译与移植
解压:
tar –xzf sqlite-autoconf-3080500.tar.gz得到sqlite-autoconf-3080500文件夹。
进入文件夹
cd sqlite-autoconf-3080500
配置文件configuresudo ./configure --host=arm-linuxCC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc AR=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ar LD=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ld STRIP=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-strip RANLIB=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ranlib CFLAGS="-mfpu=vfp -Os -lpthread -lrt" LDFLAGS=${LDFLAGS} --prefix=/home/bruce/share/work/sqllite/sqlite
|
| --host=arm-linux表示交叉编译,目标代码为arm架构。还需要注意CC、AR等变量,如果不指定则无法完成下面的交叉编译,最后编译出的是x86的Sqlite。另外CC、AR等变量必须为全路径,否则会出现找不到的情况。
检验正确与否看下图中checking for arm-linux-gcc,如果后面出现上面设置的交叉编译器则表示成功。
--prefix=/home/bruce/share/work/sqllite/sqlite表示make install安装到这个目录中。
开始编译
sudo make
安装
sudo make install
这时在安装目录下应该会生成四个文件夹,bin include lib share。
bin 目录下是sqlite的可执行文件sqlite3;
include 目录下是头文件sqlite3.h sqlite3ext.h,后面的应用程序开发会用到这些头文件;
lib 目录下是编译生成的库文件,包括静态库和共享库;
share 目录下是Sqlite帮助文档man;
使用file命令查看sqlite文件类型等信息。
file sqlite3
sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped
arm-linux-strip用于剥离调试信息,使文件变小。
root@ubuntu:~/share/work/sqllite/sqlite/bin# arm-linux-strip sqlite3
root@ubuntu:~/share/work/sqllite/sqlite/bin# file sqlite3
sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, stripped
剥离之前为65164bytes:
root @ubuntu:~/share/work/sqllite/sqlite/bin$ ls -l
-rwxr-xr-x 1 root root 65164 Jun 20 19:13 sqlite3
剥离之后为52768,文件小了不少。
root@ubuntu:~/share/work/sqllite/sqlite/bin# ls -l
-rwxr-xr-x 1 root root 52768 Jun 22 19:56 sqlite3
拷贝共享库文件到开发板系统标准库路径 /lib文件夹下。
需要创建共享库的软链接
[root@freescale]# cd /usr/lib
[root@ freescale]# ln -s libsqlite3.so.0.8.6 libsqlite3.so.0
[root@ freescale]# ln -s libsqlite3.so.0.8.6 libsqlite3.so
移植ncurses
sqlite的运行需要ncurses库,因此我们还需要移植ncurses。方法和sqlite的移植差不多。
ncurses提供字符终端处理库,包括面板和菜单。
1. 下载库源码
库文件源码下载地址
https://mirror.bjtu.edu.cn/gnu/ncurses/
选择最新5.9版本
下载得到压缩文件ncurses-5.9.tar.gz
将压缩解压,得到目录ncurses-5.9
2. 编译
进入目录ncurses-5.9
以下配置与编译参考ncurses源文件中的INSTALL文件。
由于编译过程出现关于C++头文件的问题,所以配置时使用配置参数--without-cxx-binding,不对C++部分进行编译(具体说明详见源文件中的INSTALL文件)
2.1配置
[root@localhost ncurses-5.9]# ./configure --host=arm-linux
--prefix=/home/ncurses_cross
--with-shared
CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc --without-cxx-binding
配置选项--host=arm-linux指明程序运行的系统平台,arm-linux
配置选项--prefix=/home/ncurses_cross指明编译结果安装路径
配置选项--with-shared 指明编译生成共享库文件
配置选项--without-cxx-binding不对c++相关文件进行编译
配置选项
CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi--gcc配置交叉编译器路径
2.2编译与安装
编译
[root@localhost ncurses-5.9]# make
安装编译得到的文件,安装到配置时指定的路径 /home/ncurses_cross
[root@localhost ncurses-5.9]# make install
可以查看安装的文件
[root@localhost ncurses-5.9]# cd /home/ncurses_cross/
[root@localhost ncurses_cross]# ls
bin include lib man share
[root@localhost ncurses_cross]#
lib目录下就有我们需要的共享库文件libncurses.so.5.9
使用file命令查看文件的类型
[root@localhost lib]# file libncurses.so.5.9
libncurses.so.5.9: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
处理器类型为ARM
3.移植
可以将交叉编译后的共享库文件拷贝到ARM开发板系统标准库目录 /lib。
测试sqlite数据库
编写测试程序mysqlite.c
在宿主机上交叉编译:
arm-linux-gcc -L/home/bruce/share/work/sqllite/sqlite/lib -lsqlite3 -o mysqlite3 mysqlite.c
编译选项-L/home/bruce/share/work/sqllite/sqlite/lib指明编译使用的库的路径
编译选项-lsqlite3指明编译使用的库的名字。
拷贝可执行文件到文件系统home/bruce/sqlite文件夹中,然后打包压缩下载到开发板中。
下图为在Ubuntu中操作的流程:
在开发板中测试
进入/home/bruce/sqlite文件夹,使用touch命令建立文件myfile,将运行结果输出到myfile文件。
执行./mysqlite3 > myfile命令后在该目录下会生成一个mydatabase.db的数据库文件。
查看myfile文件,发现建立数据库成功。
测试代码:src
相关文章:
大步迈入嵌入式linux——一款iMX6开发板
i.MX6开发板学习笔记二——构建linux根文件系统 |
|