首页 > 解决方案 > 在 Ubuntu 18.04 上安装 MySql C++ 连接器 8 时遇到问题

问题描述

我正在尝试在 Ubuntu 18.04 上开始使用适用于 C++ 的 MySql 连接器。下载debian包后

libmysqlcppconn7_8.0.19-1ubuntu18.04_amd64.deb
libmysqlcppconn7-dbgsym_8.0.19-1ubuntu18.04_amd64.deb
libmysqlcppconn8-2_8.0.19-1ubuntu18.04_amd64.deb
libmysqlcppconn8-2-dbgsym_8.0.19-1ubuntu18.04_amd64.deb
libmysqlcppconn-dev_8.0.19-1ubuntu18.04_amd64.deb

从官方 MySql 页面,https://dev.mysql.com/downloads/connector/cpp/8.0.html 我发出了命令

sudo apt install ./libmysqlcppconn7-dbgsym_8.0.19-1ubuntu18.04_amd64.deb
sudo apt install ./libmysqlcppconn8-2-dbgsym_8.0.19-1ubuntu18.04_amd64.deb
sudo apt install ./libmysqlcppconn-dev_8.0.19-1ubuntu18.04_amd64.deb

基于带有调试符号(dbgsym)的软件包包含所有内容的假设,这就是为什么安装它们就足够了。这个假设是正确的还是我还需要安装剩余的软件包?

当我在文件系统上查找相应的头文件和库时,我发现

> cd /usr/include/mysql-cppconn-8; ls
jdbc  mysql  mysqlx
> ls mysqlx
common  common_constants.h  common.h  devapi  xapi.h  xdevapi.h

等等和

> cd /usr/lib/x86_64-linux-gnu; ls *cppconn*
libmysqlcppconn8.so    libmysqlcppconn8.so.2.8.0.19  libmysqlcppconn.so    libmysqlcppconn.so.7.8.0.19
libmysqlcppconn8.so.2  libmysqlcppconn8-static.a     libmysqlcppconn.so.7  libmysqlcppconn-static.a

我什至无法编译包含来自 mysqlx 的单个标头的简约源文件(例如#include <mysqlx/xdevapi.h>),但最终会出现一堆链接器错误。我试图调整这里所说的 https://dev.mysql.com/doc/connector -cpp/8.0/en/connector-cpp-apps-general-considerations.html#connector-cpp-apps-tools  

到我的设置,也就是说,我尝试了如下编译命令

g++ -I/usr/include -I/usr/include/mysql-cppconn-8 -I/usr/include/mysql-cppconn-8/mysqlx -L/usr/lib/x86_64-linux-gnu -lmysqlcppconn8 mysqlcnntest.cpp -o cnntest

但这给出了一个非常冗长的链接错误,其开头为

/tmp/ccJwmw6k.o: In function `mysqlx::abi2::r0::string::traits<char>::to_str[abi:cxx11](mysqlx::abi2::r0::string const&)':
mysqlcnntest.cpp:(.text._ZN6mysqlx4abi22r06string6traitsIcE6to_strB5cxx11ERKS2_[_ZN6mysqlx4abi22r06string6traitsIcE6to_strB5cxx11ERKS2_]+0x2e): undefined reference to `mysqlx::abi2::r0::string::Impl::to_utf8[abi:cxx11](mysqlx::abi2::r0::string const&)'

有没有人有任何建议我可以做些什么来让它工作?我很乐意提供您可能需要建议的任何其他信息。提前谢谢了!!

标签: c++mysqlubuntu

解决方案


推荐阅读