时间:2021-07-01 10:21:17 帮助过:29人阅读
小弟新手,之前没接触过arm开发,这两天做毕设碰到了难题,请大家帮忙看下,
先行谢过!
我的开发板是一个实验室网关(HBE-UBI-box2),用来收集传感器传来的信息的。将写好的C文件通过arm-linux-gcc编译器编译成cgi文件(编译命令:arm-linux-gcc -o info.cgi info.c)info.c是我写的文件。编译好了之后传到网关里面,然后访问网关就可以看到编程实现的结果了。
可是,前几天导师说网关不能同时支持大量的访问,要我把网关收集的传感器数据传到实验室的服务器上,然后写个网站来访问服务器上的数据。。。好吧,我也不敢反抗,默默的在服务器上建好了MySQL数据库,写了几个jsp来访问数据库,都弄好了。
可是把数据从网关传到服务器时确碰到难题了。我刚开始以为很简单,直接把之前
没有连接mysql数据库的代码加了这段代码:
int connmysql(){
MYSQL mysql, *sock; mysql_init(&mysql); if (!(sock = mysql_real_connect(&mysql, "XXX", "XXX", "XXX", "XXX", 0, NULL, 0))) { printf("Cannot connect to database:%s\n",mysql_error(sock)); return 0; }
char sqlbuf[200] = "INSERT INTO sensordata VALUES('0','sstatus.id','sstatus.illumi','sstatus.temp','sstatus.humid','sstatus.battery');";
if (mysql_query(sock, sqlbuf)) { printf("Query Failed:%s", mysql_error(sock)); return 0; } mysql_close(sock);return 0;
}
其中那个连接数据库语句中的IP地址和用户名密码数据库名都是正确的,我用XXX代替了~。。。
代码也写好了,可是我在用arm-linux-gcc -o 编译的时候却报错了,百度了下,发现自己想的太简单了。按照别人的指导,在虚拟机Ubuntu上又装了mysql的客户机和服务器。
1. sudo apt-get install mysql-server
2. apt-get install mysql-client
3. sudo apt-get install libmysqlclient-dev
编译的命令也找了许多,大致就是要加上编译时用到的库的路径,最后采用的命令如下:arm-linux-gcc -I'/usr/include/mysql' -L'/usr/lib/i386-linux-gnu' -lmysqlclient -lpthread -lz -lm -lrt -ldl -o info.cgi mysql-info.c
这个时候噩梦开始了,一开始报了好多错,我只好一个个排查解决,其中辛酸暂且不表,但是最后还是有一个无法解决:
报的错说是:libc.so 的文件格式不被认可和解析错误。找了好久没找到适合arm编程的libc.so文件,只能上这求救了,各位大神如有解决办法,或者对于这个项目的思路有什么新的思路(即不用通过arm连接mysql也可以实现相同功能)烦请指点一二,感激不尽~