免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9621 | 回复: 6
打印 上一主题 下一主题

[C] gcc编译 静态链接mysql库的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-28 15:59 |只看该作者 |倒序浏览
因我们的客户有的在用mysql5有的在用mysql4, 所以我想用静态编译一个程序来解决这个版本问题。
但是测试gcc -o xxx xxx.c /usr/lib/mysql/libmysqlclient.a -lssl -Wall

编译用的机器装的是mysql4, 之后丢另一台装mysql5机器上提示
libssl.so.4 => not found
libcrypto.so.4 => not found

那台机器上只有libssl.so.6 和libcrypto.so.6

问题
1。我怎么做才能保证我编译的调用mysql的程序在没安装mysql api或者安装了其他版本mysql的机器上也能运行?
2。我在机器上找不到libssl.so.4和libcrypto.so.4的静态库,在网上也没找到,请问要在哪下?

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
2 [报告]
发表于 2011-06-28 16:25 |只看该作者
1、没有安装mysql api不能运行吧,你得把libmysqlclient.a拷到机器上啊,还有头文件之类的也要。其他版本mysql的话,你只能解决兼容问题了。
2、我的机器上有这两个东西,你是啥机器啊。

论坛徽章:
0
3 [报告]
发表于 2011-06-28 16:33 |只看该作者
1、没有安装mysql api不能运行吧,你得把libmysqlclient.a拷到机器上啊,还有头文件之类的也要。其他版本my ...
ecjtubaowp 发表于 2011-06-28 16:25



1.静态编译就是包含了libmysqlclient.a静态库啊,现在代码完全不用改,只是编译时库的问题
2.你机器上有那两个.a文件? 我的机器是redhat

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
4 [报告]
发表于 2011-06-28 16:37 |只看该作者
回复 3# 204tian


    不好意思,没看清。我的机器上是有这两个文件的,.a .so的都有,RHEL 5.2

论坛徽章:
0
5 [报告]
发表于 2011-06-28 16:54 |只看该作者
我搞定了,
我把libcrypto.so.4  libmysqlclient.so.14  libssl.so.4三个库丢在一个目录lib, 然后编译时用./lib/libmysqlclient.so.14 -Wl,-rpath,./lib/ 指定在这个目录链接动态库, 编译完后把这个目录一起给客户就可以了

论坛徽章:
0
6 [报告]
发表于 2011-06-28 16:56 |只看该作者
最后还是觉得动态编译比较好,反正都自带库文件了

论坛徽章:
0
7 [报告]
发表于 2011-06-28 17:14 |只看该作者
-static

同时确认你需要的每一个库,在你机器上都有静态版本
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP