MiniSQL实验

20 篇文章 6 订阅

本次实验需要用到的包:

Ⅰ. 交叉编译msql库

因为最终代码要到开发板上去跑,所以要用 arm-linux-gcc 编译好 msql 代码才可以到板子上执行,编译的过程是需要链接 arm 编译好的库的。

msql 十分小巧,编译的库是静态库,这就很舒服了。

mkdir -p /home/msql

把上面的两个文件传到 /home/msql 目录下去。

cd /home/msql
tar -zxvf msql-3.0-RELEASE.tar.gz
cd msql-3.0-RELEASE
./setup
cd src
vim site.mm

改成如下所示

make all
make install

接下来到 /usr/local/arm/2.95.3/arm-linux 看下是否生成了 msql3 文件夹。

cd /usr/local/arm/2.95.3/arm-linux/

因为这个系统 lipo 这个工具,所以静态库查看不了是基于哪个框架的。用 arm-linux-gcc 链接静态库编译下代码就清楚了。

切换到工作区,先把 msql.h 头文件和 libmsql.a 库文件拷贝到要编译的代码的同级目录下。

cp -rf /usr/local/arm/2.95.3/arm-linux/msql3/lib/libmsql.a /usr/local/arm/2.95.3/arm-linux/msql3/include/msql.h .
tree
.
|-- insert_test.c
|-- libmsql.a
|-- msql.h
`-- select_test.c

0 directories, 4 files

修改下代码的头文件。

现在开始编译代码。

arm-linux-gcc -o insert_test insert_test.c ./libmsql.a
arm-linux-gcc -o select_test select_test.c ./libmsql.a

如果库没有错的话,就不会报错的。

如果出现这个错误,请修改头文件为上面的。

insert_test.c:6: libmsql/msql.h: ?????????

现在查看下编译好的二进制文件是不是 ARM 平台的。

file insert_test
insert_test: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped

如果是这个信息就没问题了,请不要在 linux 上跑 arm 代码,跑不了的。这个可执行文件是要到开发板上跑的。

Ⅱ. Linux安装msql

直接用 rpm 软件管理包安装 msql-3.0-RELEASE.i386.rpm

rpm -ivh msql-3.0-RELEASE.i386.rpm
Preparing...                ########################################### [100%]
   1:msql                   ########################################### [100%]

顺便教下怎么通过 rpm 卸载软件。

rpm -e --nodeps + 软件名 就可以卸载了。

cd /home/msql
rm -rf msql-3.0-RELEASE
tar -zxvf msql-3.0-RELEASE.tar.gz
./setup
make all
make install

安装就成功了。

Ⅲ. 更改文件权限

右键,点击属性。

Ⅳ. 修改配置文件

cd /usr/local/msql3/
vim msql.conf

主要是为了板子可以连接上虚拟机的数据库。

Ⅴ. 创建数据库,数据表

进入 msqlbin 目录。

cd /usr/local/msql3/bin
tree
.
|-- cpi_stat
|-- msql
|-- msql3_broker
|-- msql3d
|-- msqladmin
|-- msqldump
|-- msqlexplain
|-- msqlexport
|-- msqlimport
`-- relshow

0 directories, 10 files

这个 msql 文件是 msql 的客户端,msql3d 是服务端,只能允许一个用户访问,msql3_broker 也是服务端,可以允许多个(默认3)个用户访问数据,其余几个就不介绍了。

所以要查询(操作)数据库,首先要启动数据库,这里我们启动一个单用户的就好。

./msql3d &

创建数据库

./msqladmin student

这样数据库就创建成功了,名字叫 student

现在创建表

./msql student
# 会进入数据库交互界面
create table test(name char(10) not null, num int)
\g

现在就在数据库 student 上创建了一个空表 test 了。

如果没有这一步,直接跑代码是肯定会报错的,因为没数据库,表是不可能有插入,查询操作的。

Ⅵ. gcc编译代码

切换到工作目录,利用 gcc 编译代码。gcc 编译代码不要链接 arm 的库!

gcc -o insert insert_test.c /usr/local/msql3/lib/libmsql.a
gcc -o select select_test.c /usr/local/msql3/lib/libmsql.a

如果启动了数据库,创建了数据库,数据表,就可以执行代码了。

./insert student 10

如果没有任何报错信息,说明数据插入成功了,查询下。

./select student 10
connect to engine!
select db!
query good!
get result!
0 
item 0,0 
item 1,1 
item 2,2 
item 3,3 
item 4,4 
item 5,5 
item 6,6 
item 7,7 
item 8,8 
item 9,9 

Ⅶ. 在开发板上连接虚拟机的数据库

配置文件都改了的话,只需要执行 arm 平台的代码就好了。

./select_test -h 192.168.1.180 student 10

select_test 是用交叉编译器编译好的查询数据库代码~

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值