这是一个非常简单的问题,我正在尝试在 64 位系统(ubuntu 22)上编译 32 位代码库。
收到错误:/usr/bin/ld: cannot find -lmysqlclient: No such file or directory
我知道这是因为链接器找不到 32 位 mysqlclient 库。但是,经过搜索,我找不到此 Ubuntu 版本的 :i386 包。
我是否需要手动下载 MySQL 源代码并将其编译为 32 位?有人知道其他 (更简单的) 替代方案吗?
我想我几年前在另一个发行版上遇到过这个问题,最后下载了源代码并进行了编译,但我确信现在有更好的方法可以通过使用软件包来保持我的发行版“干净”?
任何帮助都将不胜感激!
答案1
所以,我已经解决了这个问题,方法如下......
安装 gcc 和 g++ 的 32 位环境
sudo apt install gcc-multilib g++-multilib
sudo apt-get install libc6-dev:i386 gcc:i386
sudo apt-get install g++:i386
从以下位置手动下载并安装 mysql-apt-config_0.8.23-1_all.debMySQL 网站。
从该存储库安装 libmysqlclient21 包。
在 /usr/lib/mysql 目录中创建 .so 的软链接 -
sudo ln -sf .././i386-linux-gnu/libmysqlclient.so.21.2.30 libmysqlclient.so
发现虽然现在链接了,但由于没有该版本的开发包,因此无法编译。
下载 Ubuntu18 软件包(libmysqlclient21_8.0.30-1ubuntu18.04_i386.deb、mysql-community-client-plugins_8.0.30-1ubuntu18.04_i386.deb、libmysqlclient-dev_8.0.30-1ubuntu18.04_i386.deb),强制安装这些。
重新编译,发现由于强制安装导致缺少依赖项而导致的链接错误。
下载了缺少的依赖项(libssl1.1_1.1.1-1ubuntu2.1~18.04.20_i386.deb),并安装(无需强制安装)。
make clean, make
- 宾果!!!全部成功!
在执行此操作之前,我必须对代码库进行其他代码更改,但这解释了如何在 Ubuntu 22 上运行 32 位 MySQL 版本。