c++ mysql.h下载_debian系列下c++调用mysql, linux下面安装mysql.h文件-程序员宅基地

技术标签: c++ mysql.h下载  

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#include #include#include#include

using namespacestd;#define MYSQL_USER "root"

#define MYSQL_PASSWD "passwd"

#define MYSQL_PORT 3306

intmain(){

mysqlpp::Connection con(false);

con.set_option(new mysqlpp::SetCharsetNameOption("utf8"));if(!con.connect("test","localhost",MYSQL_USER,MYSQL_PASSWD,MYSQL_PORT)){

cout<

}

cout<

mysqlpp::Query query=con.query("select * from City");

mysqlpp::StoreQueryResult result=query.store();if(nullptr==result){

cout<

}for(auto iter=result.begin();iter!=result.end();++iter){

cout<

}return 0;

}

View Code

报错:

/opt/code/testC++/tcp_server/test_server_1/main.cpp:5:10: fatal error: mysql++/mysql++.h: 没有那个文件或目录

#include

2. 怎么安装头文件

系统环境:

debian系统kali

1. 配置

debian:

apt-get install libmysqlclient-dev libmysql++-dev

redhat:

yum install mysql-devel

发现没有,就这么干,根据不同系统因地制宜

apt-cache search libmysql

发现没有

apt-getupdate更新源

apt-cache search libmysql 有了类似的了

apt-get install default-libmysqlclient-dev default-libmysqld-dev

2. 下载解压安装:

[root@localhost 下载]#wget https://tangentsoft.com/mysqlpp/releases/mysql++-3.2.4.tar.gz

[root@localhost 下载]# tar zxvf mysql++-3.2.2.tar.gz

进入mysql++目录下,开始编译,先执行./configure生成makefile文件,之后再make,编译出libmysqlpp.so库文件:

./configure

报错:

下面这段来自blog:https://blog.csdn.net/daodaozhu05/article/details/12970657

checking for MySQL include directory... configure: error: Didn't find the MySQL include dir in'/usr/include/mysql

/usr/local/include/mysql

/usr/local/mysql/include

/usr/local/mysql/include/mysql

/usr/mysql/include/mysql

/opt/mysql/include/mysql

/sw/include/mysql'

这个有两种情况,这个是第一种

首先查找本地libmysqlclient的目录在哪里,在终端敲下面的命令:

locate libmysqlclient

sudo ./configure --with-mysql-lib=/usr/lib/x86_64-linux-gnu

如果还出现刚才的问题

Didn't find the mysql in ......

这是用--with-mysql-include选项进行安装,比如我的mysqlclient lib在/opt/local/lib/mysql5/mysql, 而mysql 在/opt/local/include/mysql5/mysql,则用下列命令安装一遍即可。

sudo ./configure --with-mysql-lib=/opt/local/lib/mysql5/mysql/ --with-mysql-include=/opt/local/include/mysql5/mysql/

3.编译并安装

sudo make

sudo make install

第二种方法:

apt-cache search libmysql

发现没有

apt-get update更新源

apt-cache search libmysql 有了类似的了

apt-get installdefault-libmysqlclient-dev default-libmysqld-dev

root@corleone:/usr/local/lib# apt-cache search libmysqldefault-libmysqlclient-dev -MySQL database development files (metapackage)default-libmysqld-dev -MySQL embedded database development files (metapackage)

libcrypt-mysql-perl -Perl module to emulate the MySQL PASSWORD() function

libglpk40-linear programming kit with integer (MIP) support

libmariadbclient-dev-compat -MariaDB database development files (libmysqlclient compatibility)

libmysql-diff-perl - module forcomparing the table structure of two MySQL databases

libmysql-ocaml - OCaml bindings forMySql (runtime package)

libmysql-ocaml-dev - OCaml bindings forMySql (development package)

libmysqlcppconn-dev - MySQL Connector for C++(development files)

libmysqlcppconn7v5- MySQL Connector for C++(library)

libreoffice-base-drivers - Database connectivity drivers forLibreOffice

node-mysql - MySQL client implementation forNode.js

solr-common - Enterprise search server based on Lucene3 - common files

然后直接也OK

./configure

make

make install

4. 添加软连接

此段来自blog:https://www.cnblogs.com/zhxilin/p/5897211.html

install成功后会将.so文件拷贝到/usr/local/lib下,并把.h头文件拷贝到/usr/local/include下。

到这里MySQL++已经安装到本机了,然而如果直接在C++代码里引用如下头文件是无法编译通过的!

#include

原因是C++在编译时需要加载这个动态库,默认情况下,g++编译器只会使用/lib和/usr/lib这两个目录下的库文件。

回头看一下make之前的./configure步骤,我们并没有指定--prefix=/some/path,所以库会默认安装到/usr/local目录下。

既然libmysqlpp.so是在/usr/local/lib下,编译器当然就无法找到它的定义了。

那么编译器如何正确找到/usr/local/lib目录呢?

/etc/ld.so.conf文件记录了编译器编译时使用的动态库路径!那我们把/usr/local/lib路径加入到文件末尾就可以了!

次配置文件修改保存后,通过ldconfig程序(在usr/sbin/下),将/etc/ld.so.conf文件列举的路径下的库文件缓存到/etc/ld.so.cache以供开发使用:

[root@localhost mysql++]# ldconfig

然后

[root@localhost mysql++]# ln -s /usr/local/lib/libmysqlpp.so /usr/lib/libmysqlpp.so

然并卵;;;

/usr/local/include/mysql++/common.h:219:11: fatal error: mysql.h: 没有那个文件或目录

# include

^~~~~~~~~

3.执行c++代码执行测试

#include

intmain()

{

cout << "hello world" << endl;return 0;

}

g++ test.cpp -o test.so

./test.so

这里还有可能报错,为什么,有可能是你用的编译器的问题,举个例子,你用的是clion软件,而这个软件默认是cmake的所以我们需要手动编译

指定一些东西 :https://www.cnblogs.com/lywy510/p/3615710.html

g++ -g -o mysql.so -I /usr/include/mysql test.cpp -L /usr/lib/x86_64-linux-gnu/ -lmysqlclient -lz

如果是c的话,就是gcc喽

编译的时候要注意用到2个路径,mysql.h和libmysqlclient.so的路径

查找mysql.h路径

[root@liu mysql]# find / -name 'mysql.h'

/usr/include/mysql/mysql.h

[root@liu mysql]# find / -name '*mysqlclient*'

/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0

/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18

/usr/lib/x86_64-linux-gnu/libmysqlclient.a

/usr/lib/x86_64-linux-gnu/libmysqlclient_r.a

/usr/lib/x86_64-linux-gnu/libmysqlclient.so

/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so

/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.0.0

/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18

然后./mysql.so,就可以啦

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_31884143/article/details/113294146

智能推荐

sqlmap安装以及运用_kali安装sqlmap-程序员宅基地

文章浏览阅读1.7k次。sqlmap是一个开源的渗透测试工具,它可以自动化检测sql注入漏洞利用sql注入缺陷 接管数据库服务器。_kali安装sqlmap

【曼哈顿距离】第六届蓝桥杯省赛C++ B组 /JAVA A组C组《移动距离》(c++)_移动距离 蓝桥杯 c++-程序员宅基地

文章浏览阅读598次,点赞19次,收藏4次。本题来自第六届蓝桥杯省赛C++ B组 /JAVA A组C组《移动距离》_移动距离 蓝桥杯 c++

zram disksize 设置_use_dedup-程序员宅基地

文章浏览阅读3.4k次。zram disksize 设置小内存项目:1G,2G,3G RAMzram disksize设置.高通:高通的设置比较简单:相关代码:init.qcom.post_boot.shif [ -f /sys/block/zram0/disksize ]; thenif [ -f /sys/block/zram0/use_dedup ]; thenecho 1 > /sys/block/zram0/use_dedupfiif [ $MemTotal -le5242_use_dedup

学画画软件app推荐_在游戏中学习!化学app软件推荐!-程序员宅基地

文章浏览阅读281次。今天中学化学园给大家推荐几款超有趣的教育软件APP,大家可以自行搜索下载,又萌又有趣,在玩乐中还能学到知识!手机要有足够内存哦~~~!下面几款适用于苹果系统~~~1.神奇的化学元素简介:可以高效帮助您记忆有关元素的基本知识。适用对象:初高中学生2.烧杯简介:150多种药剂、300多种神奇的化学反应任你尝试。安全、有趣生动、随时随地做各种化学实验,生动直观,充满乐趣~适用对象:高中学生锂..._化学游戏软件

QMI8658A-EVB 评估板--产品简介_qmi8658a中文资料-程序员宅基地

文章浏览阅读618次。QMA8658A 是一款功能强大的6轴加速度传感器,其内置了3轴加速度计和3轴陀螺仪,能够同时测量三个方向的加速度和角速度。该传感器广泛应用于无人机、机器人、智能手机等领域。为了帮助开发人员快速评估和开发基于QMA8658A的解决方案,我们推出了QMA8658A-EVB全面的评估板。该评估板精心设计,预置了所有必需的硬件接口,兼容I2C和SPI接口,方便与任意MCU处理器进行连接和通信。此外,我们还提供了详细的驱动程序和使用指南,以便开发者能够轻松使用该评估板进行二次开发。4.1 I2C接口。_qmi8658a中文资料

iMeta | 宁波大学附属第一医院崔翰斌团队综述缺血性心脏病相关肠道微生物及菌群代谢物研究进展...-程序员宅基地

文章浏览阅读551次。点击蓝字 关注我们缺血性心脏病相关肠道微生物及菌群代谢物研究进展iMeta主页:http://www.imeta.science综 述●原文链接DOI: https://doi.org/10.1002/imt2.94● 2023年2月26日,宁波大学附属第一医院崔翰斌团队、浙江省动脉粥样硬化疾病精准医学研究重点实验室范勇团队在iMeta在线发表了题为“Microbiota-related ..._与急性心肌梗死有关的微生物

随便推点

渗透测试-安服面试点总结_安服题-程序员宅基地

文章浏览阅读1.5k次。渗透测试-安服面试点总结_安服题

C语言文件操作与调试技巧:编辑、运行和测试你的项目_c语言编辑-程序员宅基地

文章浏览阅读424次。错误类型判断 在C语言中,常见的错误类型包括语法错误、逻辑错误和运行时错误。逻辑错误是指程序的逻辑错误,导致程序的输出不符合预期。运行时错误是指在程序运行过程中发生的错误,例如除以零、访问不存在的内存等。通过本文的介绍,你已经了解了在C语言项目中打开文件、编辑、运行和测试程序的基本方法,以及常见的错误类型判断和调试技巧。同时,持续学习和实践是提高编程技能的关键,希望本文能为你在C语言编程之路上提供帮助和指导。此外,还将探讨常见的错误类型判断和程序测试方法,帮助你提高代码质量和开发效率。_c语言编辑

【代码优化】for-each代替普通的for循环或者while循环_c++中的while循环可有什么替代-程序员宅基地

文章浏览阅读2.8k次。对于集合的遍历首选方法是for-eachfor(Element e :c){ doSomething(e);}这是1.5版本之后的做法;java1.5之前使用的是Iterator迭代器。为了弄清楚为啥比普通的for循环或者whlie循环好,请看一下代码Iterator i=c.iterator();while(i.hasNext()){_c++中的while循环可有什么替代

微信公众号网页静默授权/非静默授权(uniapp版)_微信公众号静默授权-程序员宅基地

文章浏览阅读7.7k次,点赞5次,收藏33次。一、问题为什么要进行网页授权?首先我们进行网页授权的需求是,获取用户信息、最主要是获取openid唯一值,可以用于用户登录、支付等功能,这时候就需要进行网页授权获取用户的信息以及openid。二、静默授权/非静默授权在操作之前可以先提前看看网页授权官方文档静默授权snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid;用来获取进入页面的用户的openid的,并且自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)。非静默授权snsapi_user_微信公众号静默授权

A Key Volume Mining Deep Framework for Action Recognition-程序员宅基地

文章浏览阅读235次。A Key Volume Mining Deep Framework for Action Recognition_a key volume mining deep framework for action recognition

python创建窗体_python生成窗口-程序员宅基地

文章浏览阅读3.9k次。广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!2、python生成目录树上述 cmd 方式虽然可以生成目录树,但是并不美观,让我们用 python 实现。 2.1 标准库pathlib介绍python有一个标准文件路径处理库 os.path ,从 python3.4 开始,python 又加入了一个标准库 pathlib ,该库..._python创建一个窗口

推荐文章

热门文章

相关标签