龙芯俱乐部开源技术社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 6983|回复: 11

如何交叉编译SQLITE3 ?

[复制链接]

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
发表于 2018-9-22 15:15:36 | 显示全部楼层 |阅读模式
本帖最后由 xieyug2012 于 2020-10-11 13:26 编辑

1,SQLite  菜鸟教程

一句话:SQLite数据库适合用于像智龙2.0这样的嵌入式系统上。
2,下载网址 :
https://www.sqlite.org/index.html

下载文件:  sqlite-autoconf-3250100.tar.gz

解压至文件夹: /home/alien/stl/sqlite-autoconf-3250100

3 , 下载编译工具链:
http://www.loongnix.org/index.php/%E9%A6%96%E9%A1%B5
安装 : sudo tar -zxvf gcc-4.3-ls232.tar.gz -C /
龙芯编译工具链 :  /opt/gcc-4.3-ls232

检查环境变量 :
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/gcc-4.3-ls232/bin
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100$


4, 配置交叉编译环境 makefile  :    ./configure CC=/opt/gcc-4.3-ls232/bin/mipsel-linux-g++ --prefix=/home/alien/stl/sqlite-autoconf-3250100/sqlitezl  --host=mipsel-linux

输出如下 :
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100$ ./configure CC=/opt/gcc-4.3-ls232/bin/mipsel-linux-g++ --prefix=/home/alien/stl/sqlite-autoconf-3250100/sqlitezl  --host=mipsel-linuxnf-3250100/sqchecking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for mipsel-linux-strip... mipsel-linux-strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
....................................

config.status: executing depfiles commands
config.status: executing libtool commands
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100$

================================================================================
5  make :
以下略过好多行 :   
/bin/bash ./libtool  --tag=CC   --mode=compile /opt/gcc-4.3-ls232/bin/mipsel-linux-g++ -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.25.1\" -DPACKAGE_STRING=\"sqlite\ 3.25.1\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_JSON1 -DSQLITE_ENABLE_RTREE -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c  -fPIC -DPIC -o .libs/sqlite3.o
Makefile:532: recipe for target 'sqlite3.lo' failed
==========================================================================================


6 ,编译错误 。
哪位大神出个主意?



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

46

主题

115

帖子

4146

积分

论坛元老

Rank: 8Rank: 8

积分
4146
发表于 2018-9-22 19:39:04 | 显示全部楼层
要在哪個機器上用的?
網上有人說apt install tcl-dev tk-dev

46

主题

115

帖子

4146

积分

论坛元老

Rank: 8Rank: 8

积分
4146
发表于 2018-9-22 20:24:10 | 显示全部楼层
在龍芯派上編譯可以通過,耗時25分鍾

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-9-23 09:25:41 来自手机 | 显示全部楼层
cyberhero 发表于 2018-9-22 19:39
要在哪個機器上用的?
網上有人說apt install tcl-dev tk-dev

在银河麒麟上交叉编译,用在智龙开发板上

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-9-23 17:54:27 | 显示全部楼层
本帖最后由 xieyug2012 于 2020-10-11 13:29 编辑

补充 :参照
https://blog.csdn.net/kang99827765/article/details/8690114  说明 ,修改Makefile文件 :  
-DPACKAGE_STRING=\"sqlite\ 3.25.1\"   ,删除3.25.1前面的空格。
换了个优麒麟编译成功,那个银河麒麟用了一次startx之后,就进不去了 (后来发现,密码要大于8个字母)
不过我分析,应该不是操作系统版本的原因,是我原来用鼠标右键对sqlite-autoconf-3250100.tar.gz进行了解压缩,这种解压方式看来对于linux软件很不靠谱。
以下简述一下交叉编译的过程 :

1,下载智龙2.0 编译工具链 。
http://www.loongnix.org/index.php/
点击按钮 :
快速下载Loongnix系统(64bit 网络安装 LiveCD)
找到并下载  gcc-4.3-ls232.tar.gz
解压 : sudo tar -zxvf gcc-4.3-ls232.tar.gz -C /
2, 网址 :
https://www.sqlite.org/index.html  ,下载 sqlite3 。
下载文件:  sqlite-autoconf-3250100.tar.gz
解压 : sudo tar -zxvf  sqlite-autoconf-3250100.tar.gz
解压并cd进入文件夹: /home/alien/stl/sqlite-autoconf-3250100

3, 创建文件夹 :
mkdir sqlitezl
/home/alien/stl/sqlite-autoconf-3250100/sqlitezl

4,配置makefile:
./configure CC=/opt/gcc-4.3-ls232/bin/mipsel-linux-gcc --prefix=/home/alien/stl/sqlite-autoconf-3250100/sqlitezl  --host=mipsel-linux
说明:     CC :指定编译器。

      --prefix:安装目录。           --host:运行环境
参照

https://blog.csdn.net/kang99827765/article/details/8690114  说明 ,修改Makefile文件 :  
-DPACKAGE_STRING=\"sqlite\ 3.25.1\"   ,删除3.25.1前面的空格。  
5,编译源文件。
make  
6,检查上一条命令的退出状态
echo  $?     程序正常退出返回0!
7,安装程序。
make install
8,查看 /home/alien/stl/sqlite-autoconf-3250100/sqlitezl文件夹
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100/sqlitezl$ find *
bin
bin/sqlite3
include
include/sqlite3ext.h
include/sqlite3.h
lib
lib/pkgconfig
lib/pkgconfig/sqlite3.pc
lib/libsqlite3.so.0.8.6
lib/libsqlite3.so.0
lib/libsqlite3.so
lib/libsqlite3.la
lib/libsqlite3.a
share
share/man
share/man/man1
share/man/man1/sqlite3.1
alien@alien-VirtualBox:~/stl/sqlite-autoconf-3250100/sqlitezl$
看来编译完成了,下一步弄到开发板上试试。

84

主题

465

帖子

44万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
440441
发表于 2018-9-25 14:50:11 | 显示全部楼层
xieyug2012 发表于 2018-9-23 17:54
换了个优麒麟编译成功,那个银河麒麟用了一次startx之后,就进不去了
不过我分析,应该不是操作系统版本 ...

很好啊 ,能在中标麒麟 上编译了吗还有深度

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-10-3 09:23:56 | 显示全部楼层
本帖最后由 xieyug2012 于 2020-10-11 13:30 编辑

在开发板上操作数据库 :
1,把编译好的二进制文件压缩后 cp到开发板的home里,解压

2,测试一下SQLITE3 :
2.1 创建一个数据库 。

没有出现预期的结果 ?
2.2 重新折腾一下。

2.3 再运行一下 。

OK了 。
3 其实这是一个很经典的菜鸟错误,就是 。。。。。。。数据库查询语句后面少了一个分号。有些shell命令是不用分号的 。  
以后有空试一下C API。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-10-5 14:25:36 | 显示全部楼层
本帖最后由 xieyug2012 于 2020-10-11 13:31 编辑

在智龙2.0上运行 SQLITE3的C API :
1 ,测试程序来自以下网站 :

2 交叉编译C语言程序。程序中运用了SQLITE3  的 C API 。2.1 提示找不到lib库。

2.2 把库文件都cp到以下文件夹里。

include文件cp到以下文件夹

通常情况应该是在这里 。但是好像不起作用 。

2.3  重新进行交叉编译 ,出现了sql1.out文件 。  

编译其余程序 。sql2 ~ sql6

3 运行程序
3.1 运行程序sql1.out出现错误 。

3.2 把运行库文件cp到开发板的lib文件夹里

3.3 重新运行编译好的其他程序

4 运行程序结果ok 。  其余的程序以后再测试吧 。感觉应该没问题。
这个测试是在开发板的内存中操作数据库 ,在SD卡里不能直接运行 ,可能是SD卡格式的问题,有时间把SD卡格式化成linux的格式再试试 。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-10-5 15:16:39 | 显示全部楼层
本帖最后由 xieyug2012 于 2018-10-5 15:31 编辑
sn2015ol 发表于 2018-9-25 14:50
很好啊 ,能在中标麒麟 上编译了吗还有深度

没玩过这两款系统 ,有时间都下载了试试 。感觉上应该不成问题的 。

25

主题

218

帖子

10万

积分

论坛元老

Rank: 8Rank: 8

积分
101939
 楼主| 发表于 2018-10-7 15:14:16 | 显示全部楼层
本帖最后由 xieyug2012 于 2020-10-11 13:32 编辑

在中标系统编译成功。需要修改makefile文件,删除那个空格 。

中标linux编译的sqlite3  C API运行程序

cp到智龙2.0运行ok。用的是楼上程序创建的数据库 。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|龙芯俱乐部开源技术社区

GMT+8, 2024-4-23 21:08 , Processed in 0.136923 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表