交叉编译mysql客户端libmysql

交叉编译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编译器的相应目录下,这样就可以不用每次都设置编译参数了


你可能感兴趣的:(mysql,数据库,user,Path,include,compiler)