我试图在64位CentOS 5.3 (基于RedHat 4.1.2)主机上运行编译的32位二进制文件。二进制程序抱怨无法找到libmysqlclient.so.15。这样的文件存在于服务器上,但是它是64位的,因此不好。
我可以在主机上安装32位MySQL客户端库吗?最好是以官方的方式(即通过存储库)。如果不是的话,那么用一种冷酷的方式呢?
此外,这是否适合提出这样一个问题的地点?
编辑:这里的文章确认您不能在一个进程中混合和匹配bitness。但它的配方不适用于CentOS。
维基百科指出,CentOS从RHEL派生而来的RHEL,能够使整个32位用户地沿着64位运行.系统上已经有了一些32位的库- libc
之类的.只是不是MySQL。
我可以运行其他没有链接到libmysqlclient的32位二进制文件。
编辑:yum search mysql
说:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.symnds.com
* extras: mirror.symnds.com
* updates: mirror.wiredtree.com
addons | 1.9 kB 00:00
base | 1.1 kB 00:00
extras | 1.9 kB 00:00
updates | 1.9 kB 00:00
Excluding Packages in global exclude list
Finished
================================ Matched: mysql ================================
mod_auth_mysql.x86_64 : Basic authentication for the Apache web server using a
: MySQL database.
qt-MySQL.x86_64 : MySQL drivers for Qt's SQL classes.
MySQL-bench.x86_64 : MySQL - Benchmarks and test system
MySQL-client.x86_64 : MySQL - Client
MySQL-devel.x86_64 : MySQL - Development header files and libraries
MySQL-python.x86_64 : An interface to MySQL
MySQL-server.x86_64 : MySQL: a very fast and reliable SQL database server
MySQL-shared.x86_64 : MySQL - Shared libraries
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
bytefx-data-mysql.x86_64 : MySQL database connectivity for Mono
freeradius-mysql.x86_64 : MySQL bindings for freeradius
freeradius2-mysql.x86_64 : MySQL support for freeradius
libdbi-dbd-mysql.x86_64 : MySQL plugin for libdbi
pdns-backend-mysql.x86_64 : MySQL backend for pdns
pure-ftpd.x86_64 : Lightweight, fast and secure FTP server
qt4-mysql.x86_64 : MySQL drivers for Qt's SQL classes
rsyslog.x86_64 : Enhanced system logging and kernel message trapping daemon
rsyslog-mysql.x86_64 : MySQL support for rsyslog
unixODBC.i386 : A complete ODBC driver manager for Linux
unixODBC.x86_64 : A complete ODBC driver manager for Linux
unixODBC64.x86_64 : A complete ODBC driver manager for Linux
发布于 2012-09-28 16:02:36
如何安装32位libmysqlclient.so?
您的MySQL安装可能来自不同的来源。它可以是发行版附带的rpm,也可以是Sun/Oracle的rpm,也可以是从源代码构建的。
rpm -q --whatprovides $(which mysql)
应该告诉你这个包裹的名字
MySQL-client-...
mysql-5.0...
mysql-community-server-client
mysql-5.1...
no package provides /usr/bin/mysql
。在CentOS上,最有可能出现前两个选项。MySQL-client-5.0
是Sun/Oracle,mysql-5.0
可能来自于发行版。使用rpm -q --info <package_name>
获取扩展信息,并验证Vendor:
行是否确认了假设。
下面是一条典型的供应商线:
Name : MySQL-shared-community Relocations: (not relocatable)
Version : 5.0.96 Vendor: Oracle and/or its affiliates
的MySQL
如果您的mysql安装来自Sun/Oracle,请转到MySQL社区服务器下载页面,在通用(GA)发布版本中选择具有MySQL5.0版本和32位体系结构的版本,选择mysql共享社区包,下载并用rpm -i
安装。这个包提供了确切的/usr/lib/libmysqlclient.so.15
库。
在CentOS5中,libmysqlclient属于mysql包。
yum install mysql.i386
应该能起作用。
在CentOS6中,它被移动到一个单独的mysql-libs包中。
安装库后,检查动态库依赖项是否正确解决:
ldd <your_binary> | grep libmysqlclient
应该返回类似的东西
libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15
如果您想知道是什么提供了特定64位库的32位版本,可以使用rpm -q --whatprovides /path/to/your/lib64/library
来确定包的名称。然后将x86_64替换为名称中的i686,以获得32位对应方的名称。使用yum search
验证包是否由您订阅的存储库提供。
发布于 2012-05-11 18:48:39
我可以在主机上安装32位MySQL客户端库吗?
是。Redhat在/usr/lib中安装32位库,64位库安装到/usr/lib 64。操作系统将在软件运行时自动加载相应的库。
https://serverfault.com/questions/388305
复制相似问题