Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

昨天晚上就想拿C++连接Mysql了,今天一早上就起来尝试,终于弄明白了怎么安装(顺便还给自己补了一波cpp的知识)。
下面是安装方法:

安装

先到官网下载最新版本(其实是不是最新应该没有关系),如果您实在是不原因看英文,那么点击这个链接mysql++-3.2.5.tar.gz即可下载。
下载完成后,首先要解压:

1
tar -zxvf mysql++-3.2.5.tar.gz

如果您是萌新,请把上面的”mysql++-3.2.5.tar.gz”换成您下载的压缩包的名字。
之后进入解压后的目录:

1
cd mysql++-3.2.5.tar.gz

接下来是安装:

1
2
3
4
5
6
# 配置
./configure
# 编译
make
#安装(如果权限不够记得加sudo)
make install

默认会安装到/usr/local/lib和/usr/local/include下。

卸载

先进入mysql++-3.2.5文件夹(即您解压出的文件夹),然后输入:

1
make uninstall

如果提示您权限不够记得加sudo。

使用中遇到的问题

如果您按照以上方法安装完成后,使用:#include “mysql++.h”的时候提示您未找到文件,将其换成#include “mysql++/mysql++.h”。(我开头说到的补了Cpp的知识就是因为这个。如果您使用此方法依旧无效后,请将其填写成mysql++.h的绝对路径)。
另外,如果按照我上面所说的修改include语句后,提示缺少”mysql.h”文件,不要急,这是因为mysql++.h包含了connection.h,而connection.h包含了common.h,但是common.h中有这么一段话:

1
2
3
4
5
6
7
8
9
// Now that we've defined all the stuff above, we can pull in the full
// MySQL header. Basically, the above largely replaces MySQL's my_global.h
// while actually working with C++. This is why we disobey the MySQL
// developer docs, which recommend including my_global.h before mysql.h.
#if defined(MYSQLPP_MYSQL_HEADERS_BURIED)
# include <mysql/mysql.h>
#else
# include <mysql.h>
#endif

恕我学识浅薄,只能看得似懂非懂,不过显而易见问题就出在了这里。虽然知道作者是基于一定的考量才写下了:

1
#include <mysql.h>

这段代码。
不过既然出错了,我们就需要手动更正,比如将其换为:

1
#include <mysql/mysql.h>

即可。

编译时如果提示类似undefined reference to `mysqlpp::Connection::Connection(bool)’之类的话,则将/usr/local/lib下的关于mysql++的东西全部拷贝到/usr/lib,在我写这篇博客的时候,需要拷贝的有:libmysqlpp.so libmysqlpp.so.3 libmysqlpp.so.3.2.5 。这个问题困扰了我近一个小时,无论是改ld的配置文件还是指定目录都会出现各种各样的bug,最后脑子一抽就想出了这么个方法。

不行了,太累了,有机会我再出博客介绍mysql++的使用吧,本篇完。

评论



愿火焰指引你