centos上面连接非本机的mysql数据库

十八道胡同 2018-12-19 02:31:07
问题1:
在windows下面是使用的libmysql.lib libmysql.dll 和一众mysql头文件来连接mysql数据库的(本机不安装mysql的驱动),那在centos里面是不是就可以直接用mysql提供的so文件和mysql的头文件来连接使用mysql数据库?可以在不安装mysql和驱动的情况下?

在windows下面用的函数是:
mysql_init
mysql_real_connect
mysql_query
mysql_store_result
mysql_fetch_row
...


问题2:
我看mysql -connectioner -C++ 需要使用boost库,如果我要发布程序的话,只要附带boost库的so文件就好了吧?


...全文
540 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35112628 2018-12-20
  • 打赏
  • 举报
回复
在windows下面用的函数是: mysql_init mysql_real_connect mysql_query mysql_store_result mysql_fetch_row 根据你列出来的这些函数需要用到的库是 应该是 -lmysqld-debug或者是-lmysqld  而不是 -lmysqlclient
十八道胡同 2018-12-20
  • 打赏
  • 举报
回复
引用 15 楼 @风轻云淡_ 的回复:
[quote=引用 12 楼 LCL_data 的回复:]
[quote=引用 10 楼 @风轻云淡_ 的回复:]
可以放so旁边,放哪都无所谓的。之前说错了,我又自己测试了下,-L与路径之间好像没有空格也是可以的,问题应该不在这里。我习惯在源码目录建一个lib文件夹,动态库静态库全放里面,编译的之后 增加选项:-L ./lib 例:

嗯,你这个方式很好,非常感谢。


我自己试验出来了。就是11楼。
-L./ 这样就把需要的so文件 放到我自己的目标文件的旁边。[/quote]
你一直没贴报错图片,我以为是路径的问题,如果贴出来的话,应该早就解决了,当时的报错应该是报找不到指定文件吧,这种情况下不是路径的问题,是包名的问题,需要建一个软连接, 命令行输入 ln -s xxx.so.2.1 xxx.so 即可[/quote]

嗯嗯,是我疏忽了, 谢谢您。
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复
引用 12 楼 LCL_data 的回复:
[quote=引用 10 楼 @风轻云淡_ 的回复:]
可以放so旁边,放哪都无所谓的。之前说错了,我又自己测试了下,-L与路径之间好像没有空格也是可以的,问题应该不在这里。我习惯在源码目录建一个lib文件夹,动态库静态库全放里面,编译的之后 增加选项:-L ./lib 例:

嗯,你这个方式很好,非常感谢。


我自己试验出来了。就是11楼。
-L./ 这样就把需要的so文件 放到我自己的目标文件的旁边。[/quote]
你一直没贴报错图片,我以为是路径的问题,如果贴出来的话,应该早就解决了,当时的报错应该是报找不到指定文件吧,这种情况下不是路径的问题,是包名的问题,需要建一个软连接, 命令行输入 ln -s xxx.so.2.1 xxx.so 即可
AlbertS 2018-12-19
  • 打赏
  • 举报
回复
引用 4 楼 LCL_data 的回复:
我现在安装yum install mysql-devel 之后,centos就可以远程访问服务器的mysql。但是编译的时候需要指定头文件目录和libmysqlclient.so文件的目录
-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient



可以把头文件放同级目录,参数变量 -I /mysql就行,但是把libmysqlclient.so 放同级目录后,怎么引用呢?
我试了
-L.
-L/
都不行

试试-L ./
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
之前libmysqlclient.so文件有版本号,我把后面的版本号给去掉了
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
引用 10 楼 @风轻云淡_ 的回复:
可以放so旁边,放哪都无所谓的。之前说错了,我又自己测试了下,-L与路径之间好像没有空格也是可以的,问题应该不在这里。我习惯在源码目录建一个lib文件夹,动态库静态库全放里面,编译的之后 增加选项:-L ./lib 例:

嗯,你这个方式很好,非常感谢。


我自己试验出来了。就是11楼。
-L./ 这样就把需要的so文件 放到我自己的目标文件的旁边。
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
[root@localhost src]# g++ TestCentOSC++.cpp -o TestCentOSC -I./mysql -L./ -lmysqlclient
[root@localhost src]# ./TestCentOSC
MySQL client version : 50560
Success connecting
select * from Station where version = 2015093001
602
14
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复
可以放so旁边,放哪都无所谓的。之前说错了,我又自己测试了下,-L与路径之间好像没有空格也是可以的,问题应该不在这里。我习惯在源码目录建一个lib文件夹,动态库静态库全放里面,编译的之后 增加选项:-L ./lib 例:
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复
-lmysqld-debug 这个是debug版本的,-lmysqld这个是release版本的。
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
引用 7 楼 @风轻云淡_ 的回复:
在windows下面用的函数是:
mysql_init
mysql_real_connect
mysql_query
mysql_store_result
mysql_fetch_row

根据你列出来的这些函数需要用到的库是 应该是 -lmysqld-debug或者是-lmysqld 而不是 -lmysqlclient



我用的是debug的程序集? 有release版本的吧?

问题2:-lmysqld-debug或者是-lmysqld 这个不能放自己的so文件傍边吗?如果放的话 怎么写呢?
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复
在windows下面用的函数是:
mysql_init
mysql_real_connect
mysql_query
mysql_store_result
mysql_fetch_row

根据你列出来的这些函数需要用到的库是 应该是 -lmysqld-debug或者是-lmysqld 而不是 -lmysqlclient
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复
引用 4 楼 LCL_data 的回复:
我现在安装yum install mysql-devel 之后,centos就可以远程访问服务器的mysql。但是编译的时候需要指定头文件目录和libmysqlclient.so文件的目录
-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient



可以把头文件放同级目录,参数变量 -I /mysql就行,但是把libmysqlclient.so 放同级目录后,怎么引用呢?
我试了
-L.
-L/
都不行

-L和路径之间要有空格 -L /usr/lib64/mysql -lmysqlclient
@风轻云淡_ 2018-12-19
  • 打赏
  • 举报
回复


引用 3 楼 LCL_data 的回复:
[quote=引用 2 楼 AlbertS 的回复:]
启动程序的电脑不需要安装mysql吧,只要能访问安装mysql的电脑就行



PCA上面有mysql,PCB上面的程序访问PCA的mysql。 PCB上面的程序需要用到mysql的so文件之类的吧?[/quote]
是的,发布程序的时候需要附带.a和.so库文件,程序运行机器不一定需要安装mysql数据库,但是必须要有程序运行的环境。
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
我现在安装yum install mysql-devel 之后,centos就可以远程访问服务器的mysql。但是编译的时候需要指定头文件目录和libmysqlclient.so文件的目录
-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient



可以把头文件放同级目录,参数变量 -I /mysql就行,但是把libmysqlclient.so 放同级目录后,怎么引用呢?
我试了
-L.
-L/
都不行
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
引用 2 楼 AlbertS 的回复:
启动程序的电脑不需要安装mysql吧,只要能访问安装mysql的电脑就行



PCA上面有mysql,PCB上面的程序访问PCA的mysql。 PCB上面的程序需要用到mysql的so文件之类的吧?
AlbertS 2018-12-19
  • 打赏
  • 举报
回复
启动程序的电脑不需要安装mysql吧,只要能访问安装mysql的电脑就行
十八道胡同 2018-12-19
  • 打赏
  • 举报
回复
或者是把mysql的头文件放到项目里面,然后引用libmysqlclient.so文件就好?这样 部署该程序的电脑就不需要安装mysql 的驱动?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧