我需要在 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 上受支持,对吗?