c++ - 在 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&)'
有没有人有任何建议我可以做些什么来让它工作?我很乐意提供您可能需要建议的任何其他信息。提前谢谢了!!
解决方案
推荐阅读
- angular - ngOnInit 中未定义 Angular Web 组件(元素)输入
- javascript - 仅在订阅 httpClient observables 后,如何从父组件方法调用子组件方法?
- javascript - 在 ReactJS 中进行并行异步等待调用
- r - BatchGetSymbols - 重塑输出
- python - 在 Python 中为连续数据生成马尔可夫转移矩阵
- firebase - 如何使用 Flutter 在 Firestore 中显示图像文件
- android - 多对多关系未加载
- python - Python - 爬取目录、从 ZIP 中提取 CSV 文件以及组合多个 CSV
- javascript - CSS+JAVASCRIPT | 隐藏按钮移动可见性按钮
- php - php preg_replace() 更改 * * 字符之间单词的文本颜色