arm平臺 linux系統下安裝mysql connector 源碼編譯版本 總結

源碼位置:需要從官網下載,下載地址:https://dev.mysql.com/downloads/connector/cpp/

      

因爲沒有arm平臺linux7的源碼,所以選擇最後一個通用的linux版本

mysql c++ connector依賴: boost_1_69_0,openssl, mysql c connector

注  :所用boost源碼來自boost https://dl.bintray.com/boostorg/release/1.69.0/source/

         openssl源碼來自 網絡

         mysql c connector源碼來自 https://dev.mysql.com/downloads/mysql/  使用第一個tar.gz包即可,如下圖

安裝過程:

  1. 安裝依賴庫 boost__69_0 openssl
  2. 安裝mysql c connector 創建build目錄
    • cmake .. \
       -DWITH_BOOST=/home/leq/tools/thirdparty/boost_1_69_0 \
      
       -DCMAKE_C_COMPILER=/home/leq/tools/install/GCC-7.2.0/bin/gcc \
      
       -DCMAKE_CXX_COMPILER=/home/leq/tools/install/GCC-7.2.0/bin/g++ \
      
       -DWITH_SSL=/home/leq/tools/install/openssl \
      
       -DHAVE_IB_GCC_ATOMIC_COMPARE_EXCHANGE=1 \
      
       -DIGNORE_AIO_CHECK=1 \
      
       -DHAVE_IB_ATOMIC_PTHREAD_T_GCC=1 \
      
       -DHAVE_GCC_SYNC_BUILTINS=1 \
      
       -DCURSES_LIBRARY=/home/leq/tools/install/ncurse/usr/lib/libncurses.so \
      
       -DCURSES_INCLUDE_PATH=/home/leq/tools/install/ncurse/usr/include \
      
       -DCMAKE_INSTALL_PREFIX=/home/leq/tools/install/mysql_c_connector

      2.

      make –j && make install

       

碰到的問題 問題1

安裝ncurses-devel

下載地址 : http://ftp.gnu.org/gnu/ncurses/  ncurses-6.1.tar.gz

tar xvf ncurses-6.1.tar.gz

cd ncurses-6.1

./configure --with-shared --without-debug --without-ada --enable-overwrite --with-install-prefix=${HOME}/tools/install/ncurse

make –j

make install

問題2

export LD_LIBRARY_PATH=/home/leq/tools/install/GCC-7.2.0/lib64 :$LD_LIBRARY_PATH

 

  1. 安裝 c++ connector 創建build目錄
    1. cmake .. \
          -DCMAKE_C_COMPILER=/home/leq/tools/install/GCC-7.2.0/bin/gcc \
          -DCMAKE_CXX_COMPILER=/home/leq/tools/install/GCC-7.2.0/bin/g++ \
          -DWITH_SSL=/home/leq/tools/install/openssl \
          -DWITH_JDBC=ON \
          -DMYSQL_DIR=/home/leq/tools/install/mysql_c_connector \
          -DWITH_BOOST=/home/leq/tools/thirdparty/boost_1_69_0 \
          -DCMAKE_INSTALL_PREFIX=/home/leq/tools/install/mysql_c++_connector \
          -DCMAKE_BUILD_TYPE=Release

      2. 

      make -j && make install

       

 

安裝三個安裝的順序按照 1 2 3的順序,因爲有依賴關係,所以安裝順序不可打亂

測試demo:三個文件 :build.sh CMakeLists.txt test_mysql.sh

build.sh:

#!/bin/bash

export CC=/home/leq/tools/install/GCC-7.2.0/bin/gcc
export CXX=/home/leq/tools/install/GCC-7.2.0/bin/g++
export LD_LIBRARY_PATH=/home/leq/tools/install/GCC-7.2.0/lib64:$LD_LIBRARY_PATH

if [ ! -d ./build ]
then
    mkdir build
fi

cd build

cmake ..

make

./test_mysql

test_mysql.cpp

#include <stdlib.h>
#include <iostream>

#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main(void)
{
    cout << "Running 'SELECT 'Hello World!' AS _message'..." << endl;

    try
    {
        sql::Driver *driver;
        sql::Connection *con;
        sql::Statement *stmt;
        sql::ResultSet *res;

        /* 連接mysql服務器 */
        driver = get_driver_instance();
        con = driver->connect("tcp://172.16.12.xxx:xxxx", "username", "passwd");
        con->setSchema("schema");

        stmt = con->createStatement();
        res = stmt->executeQuery("SELECT 'Hello World!' AS colu");
        while (res->next()) {
            //通過列別名訪問
            cout << res->getString("colu") << endl;
            //通過列偏移
            cout << res->getString(1) << endl;
        }

        delete res;
        delete stmt;
        delete con;
    }
    catch (sql::SQLException &e)
    {
        cout << "# ERR: SQLException in " << __FILE__;
        cout << "(" << __FUNCTION__ << ") on line " << __LINE__ << endl;
        cout << "# ERR: " << e.what();
        cout << " (MySQL error code: " << e.getErrorCode();
        cout << ", SQLState: " << e.getSQLState() << " )" << endl;
    }
    cin.get();
    return EXIT_SUCCESS;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.6)

project(demo)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#set(CMAKE_C_COMPILER "/home/leq/tools/install/GCC-7.2.0/bin/gcc")
#set(CMAKE_CXX_COMPILER "/home/leq/tools/install/GCC-7.2.0/bin/g++")

include_directories(
    /home/leq/tools/install/mysql_c++_connector/include/jdbc/cppconn
    /home/leq/tools/install/mysql_c++_connector/include/jdbc
    /home/leq/tools/thirdparty/boost_1_69_0
)

link_directories(
    /home/leq/tools/install/mysql_c++_connector/lib64
    /home/leq/tools/install/openssl/lib
)

add_executable(test_mysql test_mysql.cpp) # 生成可執行文件
target_link_libraries(test_mysql libmysqlcppconn.so)

測試結果:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章