2013年5月16日 星期四

Raspberry Pi + Cross Compiler + MySQL

要在 Cross Compiler 上建立 MySQL Connect API 的編譯環境
必須要有 .h include 檔及 mysqlclient lib 檔。

一、先在 Raspberry Pi 下載 MySql connector for C
 wget  http://lgallardo.com/wp-content/uploads/files/programming/mysql-connector-c-6.0.2.tar.gz

二、解壓縮
 tar xvzf mysql-connector-c-6.0.2.tar.gz
 cd mysql-connector-c-6.0.2
 
三、安裝 cmake
 sudo aptitude install cmake
 
四、產出 makefile 檔,其中「install_path」自定義
 cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/install_path 
 
五、make 需要很久的時間
 
六、make install
 
七、確認是否正確安裝
 file /install_path/lib/libmysql.so.16.0.0 
 

八、將 /install_path 底下所有東西 copy 至 cross compiler host 機上。
 

九、範例程式…
    #include <mysql.h>
    MYSQL      *MySQLConRet;
    MYSQL      *MySQLConnection = NULL;
    MySQLConnection = mysql_init( NULL );

    MySQLConRet = mysql_real_connect( MySQLConnection,
                                          hostName,
                                          userId,
                                          password,
                                          db_name,
                                          0,
                                          "/var/run/mysqld/mysqld.sock",
                                          0 );
 
 注意:socket位置預設是 /tmp/mysql.sock,需按你系統所在位置填入正確值否則會出現…
 runtime error:Can't connect to local MySQL server through socket '/tmp/mysql.sock' 
 socket位置可以在 /etc/mysql/my.cnf 或 /etc/mysql/debian.cnf 查詢到。
九、編譯時引入 mysqlclient 函式庫並增加 include 及 lib patch
 gcc client.c -o client  -I/install_path/include -L/install_path/lib -lmysqlclient
 
 ext. links…
http://lgallardo.com/en/2011/07/14/conector-mysql-para-openwrt-mips/
 
=================================================================================
較簡單的方法…
1.安裝開發工具…
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libmysqlclient-dev
 
2.從 pi copy header 檔到開發環境,Eclipse 下增加 include path…
/usr/include/mysql

3.從 pi copy lib 檔到開發環境,Eclipse 下增加 lib path
使用指令查出 lib 位置…
mysql_config --libs
 
查出放在「/usr/lib/arm-linux-gnueabihf」底下,並在 linker command 增加 -lmysqlclient
libmysqlclient.a
libmysqlclient.so 

4.若缺少 libz (compress、uncompress) 亦需一併 copy 過去開發環境,並在 linker command 增加 -lz
libz.a
libz.so




沒有留言:

更高效處理 micro second 的方式

更高效處理 micro second 的方式…  以 STM32 為例… __IO unsigned long sys_tick = 0; void SysTick_Handler(void) {     HAL_IncTick();     sys_tick += (SysTi...