你的位置:
问答吧
-> C/C++
-> 问题详情
gcc编译 静态链接mysql库的问题
因我们的客户有的在用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的静态库,在网上也没找到,请问要在哪下?
作者: 204tian
发布时间: 2011-06-28
1、没有安装mysql api不能运行吧,你得把libmysqlclient.a拷到机器上啊,还有头文件之类的也要。其他版本mysql的话,你只能解决兼容问题了。
2、我的机器上有这两个东西,你是啥机器啊。
作者: ecjtubaowp
发布时间: 2011-06-28
QUOTE:
1、没有安装mysql api不能运行吧,你得把libmysqlclient.a拷到机器上啊,还有头文件之类的也要。其他版本my ...
ecjtubaowp 发表于 2011-06-28 16:25
1.静态编译就是包含了libmysqlclient.a静态库啊,现在代码完全不用改,只是编译时库的问题
2.你机器上有那两个.a文件? 我的机器是redhat
作者: 204tian
发布时间: 2011-06-28
回复 204tian
不好意思,没看清。我的机器上是有这两个文件的,.a .so的都有,RHEL 5.2
作者: ecjtubaowp
发布时间: 2011-06-28
我搞定了,
我把libcrypto.so.4 libmysqlclient.so.14 libssl.so.4三个库丢在一个目录lib, 然后编译时用./lib/libmysqlclient.so.14 -Wl,-rpath,./lib/ 指定在这个目录链接动态库, 编译完后把这个目录一起给客户就可以了
作者: 204tian
发布时间: 2011-06-28
最后还是觉得动态编译比较好,反正都自带库文件了
作者: 204tian
发布时间: 2011-06-28