碰到no version information available问题

先说下环境:

本地fedora系统,libmysqlclient.so版本是18

而服务器Centos 6.3,libmysqlclient.so版本是16


backend是在本地fedora上编译,链接。。然后远程拷贝到服务器上。

运行的时候出现

./backend: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

原因就是因为backend找不到libmysqlclient.so.18

为图省事就远程拷贝本地的libmysqlclient.so.18.0.0到服务器上,并创建libmysqlclient.so.18链接到libmysqlclient.so.18.0.0

backend可以成功运行,但是出现如下错误提示:

./backend: /usr/lib/mysql/libmysqlclient.so.18: no version information available (required by ./backend)

Google找了一下,原因就是因为libmysqlclient存在多个版本,不知道修改库的版本好了。

尝试了yum升级了一下,但是还是版本16,没有效果。

如果直接用libmysqlclient.so.18替换libmysqlclient.so.16的话,可能导致其他使用16版本的程序无法执行。。


后来想了个招。。删了libmysqlclient.so.18.0.0,然后ln -s libmysqlclient.so.16.0.0 libmysqlclient.so.18

然后。。。错误没了。。。

可耻的作弊了,可能存在的严重后果就不多说了。。


个人觉得最好的办法就是在本地装一个libmysqlclient的16版的来编译backend,毕竟服务器上的东西还是不要胡乱搞的好


你可能感兴趣的:(linux,coding)