尽管有 Multiarch 设置,Ubuntu 16.04 仍无法在操作系统中保留安装的 32 位和 64 位库

尽管有 Multiarch 设置,Ubuntu 16.04 仍无法在操作系统中保留安装的 32 位和 64 位库

我需要在 Ubuntu 16.04 (64 位) 上编译/链接 32 位和 64 位 C/C++ 可执行文件。我执行了以下命令行:

sudo apt-get install build-essential
sudo apt-get install automake libtool libtool-bin
sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install gcc-multilib g++-multilib 
sudo apt-get install libglib2.0-dev 

最后一个命令将安装 64 位 glib2.0 库

但是当我尝试通过命令安装 32 位 glib2.0 库时:

sudo apt-get install libglib2.0-dev:i386

它会卸载我之前安装的 64 位 glib2.0 库(如发布 32 位安装后的删除注释所述):

dev@ubuntu:~$ sudo apt-get install libglib2.0-dev:i386
[sudo] password for dev: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
libltdl-dev:i386 libltdl7:i386 libpcre3-dev libpcre32-3 libpcrecpp0v5 libxext-dev:i386 libxext6:i386
libxfixes-dev:i386 libxfixes3:i386 libxi6:i386 libxtst6:i386 odbcinst1debian2:i386 zlib1g-dev
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  libglib2.0-doc:i386
The following packages will be REMOVED:
  libglib2.0-dev
The following NEW packages will be installed:
  libglib2.0-dev:i386
0 upgraded, 1 newly installed, 1 to remove and 15 not upgraded.
Need to get 0 B/1,422 kB of archives.
After this operation, 1,367 kB disk space will be freed.
Do you want to continue? [Y/n]  

有人能告诉我在 Ubuntu 16.04 上安装 32 位版本时如何防止删除 64 位 glib2.0 库(以及我可能安装的其他库)。我需要为我的 C/C++ 构建安装 32 位和 64 位库。

正如我执行的命令列表所示,我确实向我的 64 位 Ubuntu 添加了 32 位架构,并验证它被操作系统识别:

dev@ubuntu:~$ dpkg --print-architecture
amd64
dev@ubuntu:~$ dpkg --print-foreign-architectures
i386

因此,根据上述查询,我​​没有理由不能在同一个 64 位操作系统中安装 64 位和 32 位的 glib2.0 库(或任何同时提供 64 位和 32 位库的库),对吧?至少这是debian multiarch link 告诉我

如果是这样,我哪里做错了,包管理器不允许这样做吗?Multiarch,在 Ubuntu 16.04 上受支持,对吗?

相关内容