交叉编译mysql客户端libmysql
确定linux安装好了cmake,
ubuntu下安装cmake: sudo apt-get install cmake
设在好arm-linux
export PATH=/usr/local/arm/4.3.2/bin:$PATH
到mysql官网上下载mysql connector/c的源代码包
tar xvzf mysql-connector-c-6.0.2.tar.gz
修改CMakeLists.txt文件 添加
SET(CMAKE_CXX_COMPILER "arm-linux-g++")
SET(CMAKE_C_COMPILER "arm-linux-gcc")
然后创建myconnector文件夹,
mkdir myconnector
运行cmake命令,设在编译后生成的文件路径
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=myconnector
make
make install
编写mysqltest.c文件
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
int main(void)
{
const char *host = "59.71.72.133";
const char *user = "root";
const char *pass = "";
const char *db = "mysql";
/* 定义mysql变量 */
MYSQL mysql;
MYSQL_RES *rs;
MYSQL_ROW row;
mysql_init(&mysql); /* 初始化 */
/* 连接数据库 */
if (!mysql_real_connect(&mysql, host, user, pass, db, 0, NULL, 0))
{
printf("数据库连接失败: %s\n", mysql_error(&mysql));
} else {
printf("数据库连接成功!\n");
}
char *sql = "select host,user from user order by rand()";
if (mysql_query(&mysql, sql)!=0)
{ /* 查询 */
printf( "%s", mysql_errno(&mysql), mysql_error(&mysql));
}
rs = mysql_store_result(&mysql); /* 获取查询结果 */
while ((row = mysql_fetch_row(rs)))
{ /* 获取每一行记录 */
printf( "%s---%s", row[0], row[1]);
}
mysql_free_result(rs); /* 释放结果集 */
mysql_close(&mysql); /* 关闭连接 */
return 1;
}
把编译好的myconnector文件夹下的include和lib文件夹放到mysqltest.c同一目录下
arm-linux-gcc -L./lib -I./include -o mysqltest mysqltest.c -lmysqlclient
这样就生成好了目标文件。
当然我们可以把myconnector文件夹下的include和lib文件夹放到arm-linux编译器的相应目录下,这样就可以不用每次都设置编译参数了