本次实验需要用到的包:
Ⅰ. 交叉编译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
主要是为了板子可以连接上虚拟机的数据库。
Ⅴ. 创建数据库,数据表
进入 msql
的 bin
目录。
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
是用交叉编译器编译好的查询数据库代码~