Armbian系统-mysql-connector-c++-1.1.8版本-交叉编译-安装

  1. 查看相关mysql-dev库: aptitude search mysql|grep devel。安装相关库。
    搜索相关安装:apt-cache search libmysql
  2. 项目用的版本是1.1.8。下载源码包mysql-connector-c++-1.1.8.。
  3. 解压,进入目录。可以先阅读“INSTALL”文件。里面有各个平台编译的详细说明(Unix, Solaris, Windows)。
  4. 了解下其它的相关信息:
    (1)cppconn目录是头文件夹,driver目录是源码文件夹。
    (2) “BUILDING ON UNIX”-“1.”。会检查:C compiler/CXX compiler/Boost/Mysql/等。
    (3)查看“BUILDING ON UNIX”-“2. Use make on build the libraries”。如何编译成库文件。
    (4)从源码安装C++连接器需要支持库:Build Tools,MySQL Client Library,Boost C++ Libraries。
    (5)必须要跨平台的编译工具CMake(推荐2.8.12或者更高哦版本,老版本也“可能”可以用)。
    (6)必须要支持C++11的编译器。
    (7)必须要MYSQL Client Library。MYSQL 5.7(5.7.9或者更高版本)。通常安装MYSQL时会安装MYSQL客户端库。
    (8)若要指定查找客户机库的位置,可以设置MYSQL_DIR的值。
    (9)必须要安装了Boost。Boost1.59.0或者更高版本。
    (10)Boost被安装后,可以设置Cmake选项BOOST_ROOT来指示Boost文件夹位置。如:cmake [other_options] -DBOOST_ROOT=/usr/local/boost_1_59_0。
    (11)可以用-DCMAKE_INSTALL_PREFIX=path_name指定安装路径。
    cmake .生成编译信息,或者可以带其它相关的配置参数。不设置表示默认。
  5. make clean。
  6. make。
  7. 如果你向安装库到当前系统上,就执行make install。
  8. 安装完成可以测试:./test_install localhost root password database。成功了,你会看到输出信息。
  9. mysql_get_option?has not been declared错误:
    (1). 没有安装MySQL客户端,只安装了mysql-devel等相关开发包,但是编译1.1.8的时候,执行make的时报如下错误:
    /mysql-connector-c++-1.1.8/driver/nativeapi/libmysql_static_proxy.cpp:323:6: error: ?:mysql_get_option?has not been declared
    if (::mysql_get_option(mysql, option, arg)) {
    ^
    driver/CMakeFiles/mysqlcppconn.dir/build.make:470: recipe for target ‘driver/CMakeFiles/mysqlcppconn.dir/nativeapi/mysql_client_api.cpp.o’ failed
    (2). 在官方网址上看到“Changes in MySQL Connector/C++ 1.1.8”解决了BUG,1.1.8版本比在MYSQL5.7低的版本不能成功编译。
    (3). 后来全文搜索的时候看到这个注释:mysql_get_option() was added in mysql 5.7.3 version和代码中关于mysql_get_option函数的相关的判断:MYSQL_VERSION_ID >= 50703。说明我们MySQL Client Library版本低于5.7.3。
    (4). 看文档说明了1.1.8版本连接选项增加了最大的数据包设置和网络缓冲区大小设置。说明我们报的错误也和这个功能有关。
    (5). 网上下载了新的mysql-devel但是架构都不对应。
    (5). 用apt-get安装的libmysqlclient-dev版本对应的5.5左右的版本,比5.7.3要低。
    (6). 要解决问题,我们需要安装Mysql了。下载了Mysql-5.7.10版本。此版本的Mysql需要Boost-1.59(高版本的Boost不合法)。
  10. 安装Mysql:
    (1)创建组:groupadd mysql
    (2)创建用户:useradd -r -g mysql mysql
    (3)创建mysql文件夹于数据存放文件夹data:mkdir -p /usr/local/mysql/data。
    (4)安装cmake。
    (5)进入mysql的解压目录,创建build文件夹,进入build文件夹。
    (6)cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data -DBOOST_INCLUDE_DIR=/usr/local/boost_1_59
    (7)make
  11. 只有1G内存,安裝Mysql中途提示:c++: internal compiler error。报内存不足。解决方式增加一个交换分区。
    (1)创建分区1G大小文件:dd if=/dev/zero of=/swapfile bs=1k count=1024000。
    (2)mkswap /swapfile。
    (3)swapon /swapfile。
    (4)如果需要每次系统重启后自动挂载交换分区,就需要修改/etc/fstab文件,新增内容:/swapfile swap swap defaults 0 0。由于我们只是本次编译到用,所以不设置。
    (5)编译完成后,关闭交换分区:swapoff /swapfile。
    (6)删除交换分区:rm /swapfile。

你可能感兴趣的:(linux,php)