Aar*_*ron 6 mysql ubuntu mysql++
我想用Linux中的C++连接到mysql数据库.在我的本地机器上,我正在运行Ubuntu,并安装了mysql服务器和客户端软件包:
sudo apt-get install mysql-server mysql-client
我遇到了Mysql ++,但是从他们的二进制包运行./configure时遇到了一些问题.错误说:
检查MySQL库目录... configure:错误:在'/ usr/lib64/usr/lib/usr/lib64/mysql/usr/lib/mysql/usr/local/lib64/usr/local中找不到mysqlclient库/ lib/usr/local/lib/mysql/usr/local/mysql/lib/usr/local/mysql/lib/mysql/usr/mysql/lib/mysql/opt/mysql/lib/opt/mysql/lib/mysql/sw/lib/sw/lib/mysql'
我看到我可以使用此命令指定路径:
./configure --with-mysql-lib =/...
但我不知道在哪里指出它.我使用whereis mysql但找不到任何包含lib子目录的mysql目录.mysqlclient库在哪里安装?
编辑:
找到之后libmysqlclient我回来了
/usr/lib/i386-linux-gnu/libmysqlclient.so.18
/usr/lib/i386-linux-gnu/libmysqlclient.so.18.0.0
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18
/usr/lib/i386-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/share/doc/libmysqlclient18
/usr/share/doc/libmysqlclient18/changelog.Debian.gz
/usr/share/doc/libmysqlclient18/copyright
/var/cache/apt/archives/libmysqlclient18_5.5.22-0ubuntu1_i386.deb
/var/lib/dpkg/info/libmysqlclient18:i386.list
/var/lib/dpkg/info/libmysqlclient18:i386.md5sums
/var/lib/dpkg /info/libmysqlclient18:i386.postinst
/var/lib/dpkg/info/libmysqlclient18:i386.postrm
/var/lib/dpkg/info/libmysqlclient18:i386.shlibs
所以,我试过./configure --with-mysql-lib=/usr/lib/i386-linux-gnu ,似乎完成没有任何抱怨.
虽然这解决了完成./configure完成的问题,但我仍然有进一步的麻烦.当我运行的make东西一直很好,直到这一点:
在./lib/sql_buffer.h:31:0中包含的文件中,来自./lib/sql_buffer.cpp:26:./lib/refcounted.h:258:2:错误:'size_t'没有命名类型. /lib/refcounted.h:在构造函数'mysqlpp :: RefCountedPointer :: RefCountedPointer()':./ lib/refcounted.h:89:2:error:class'mysqlpp :: RefCountedPointer'没有任何名为'refs_的字段'./lib/refcounted.h:在构造函数'mysqlpp :: RefCountedPointer :: RefCountedPointer(T*)':./ lib/refcounted.h:100:2:error:class'mysqlpp :: RefCountedPointer'没有任何名为'refs_'./lib/refcounted.h:104:4的字段:错误:'refs_'未在此范围内声明./lib/refcounted.h:104:16:错误:'size_t'之前的预期类型说明符./lib/refcounted.h:104:16:错误:预期';' 在'size_t'之前./lib/refcounted.h:在构造函数'mysqlpp :: RefCountedPointer :: RefCountedPointer(const ThisType&)':./ lib/refcounted.h:112:2:error:class'mysqlpp :: RefCountedPointer'没有任何名为'refs_'./lib/refcounted.h:115:8的字段:错误:'refs_'未在此范围内声明./lib/refcounted.h:在析构函数'mysqlpp :: RefCountedPointer :: ~RefCountedPointer ()':./ lib/refcounted.h:125:7:错误:'refs_'未在此范围内声明./lib/refcounted.h:在成员函数'void mysqlpp :: RefCountedPointer :: swap(mysqlpp: :RefCountedPointer :: ThisType&)':./ lib/refcounted.h:246:13:错误:'refs_'未在此范围内声明make:***[mysqlpp_sql_buffer.o]错误1
我对C++并不熟悉,所以我不确定错误究竟意味着什么.如何从这一点获得Mysql ++设置的任何帮助或指导将非常感激.虽然,我承认我也开始寻找可供使用的替代库.
导致此问题的原因size_t是在配置(make)文件中调用stddef命名空间之前必须包含它.
我有同样的问题(使用亚马逊EC2 ubuntu 12.04云服务器)并通过编辑有问题的文件(sql_buffer.cpp在我的情况下,位于/home/ubuntu/mysql++-3.1.0/lib)并包括stddef(同时也是移动字符串命名空间):
#include <stddef.h>
#include <string.h>
#include "sql_buffer.h"
Run Code Online (Sandbox Code Playgroud)
这个更正回答了你的问题.但是,你可能还有其他问题,就像我一样.所以我解释了我是如何解决你可能会或可能不会遇到的一些后续问题的.
你可能不得不使用
sudo chown username sql_buffer.cpp
Run Code Online (Sandbox Code Playgroud)
能够编辑文件,具体取决于您的安装设置(例如,我是用户ubuntu).
然后我遇到了另一个问题:
./ssx/genv2.cpp: In function âbool generate_ssqls2(const char*, const ParseV2*)â:
./ssx/genv2.cpp:70:28: error: âstrcmpâ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
所以我编辑了违规文件(genv2.cpp)并包含了字符串命名空间
#include <string.h>
Run Code Online (Sandbox Code Playgroud)
然后我有另一个问题:
./libmysqlpp_ssqls2parse.a(ssqls2parse_parsev2.o): In function `Type':
/home/ubuntu/mysql++-3.1.0/./ssx/parsev2.cpp:256: undefined reference to `mysqlpp::internal::str_to_lwr
Run Code Online (Sandbox Code Playgroud)
我可以编辑,Makefile.in但选择只是在命令行运行:
sudo g++ -o test_ssqls2 test_ssqls2_ssqls2.o -lmysqlpp_ssqls2parse -L. -lmysqlclient -L/usr/lib/x86_64-linux-gnu -lmysqlpp
Run Code Online (Sandbox Code Playgroud)
然后我继续这个make过程.
这对我有用:安装并运行mysql ++.
| 归档时间: |
|
| 查看次数: |
8015 次 |
| 最近记录: |