笔记:这个问题之前已经被问过askubuntu.com但因为偏离主题而被拒绝,相反,我被重定向到这个网站。因此我将其重新发布在这里。
我正在尝试在 GNU/Linux 下同时编译 32 位和 64 位程序。但是,某些依赖项与其自身发生冲突,这意味着无法同时安装 amd64 和 i386 版本。
例子:
ubuntu@ubuntu:~$ sudo apt-get --no-install-recommends install libfltk1.3-dev:amd64 libfltk1.3-dev:i386
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libfltk1.3-dev : Conflicts: libfltk1.3-dev:i386 but 1.3.2-4 is to be installed
libfltk1.3-dev:i386 : Conflicts: libfltk1.3-dev but 1.3.2-4 is to be installed
E: Unable to correct problems, you have held broken packages.
在我选择单独构建它(在 32 位和 64 位操作系统上)之前,我想问是否有可能对此进行一些解决方法。这是在 Ubuntu 14.04 上测试的。
更新:这个帖子强调多架构尚不支持不同架构的二进制文件的共同安装(仅库和标头)。libfltk1.3-dev
包括/usr/bin/fltk-config,所以这很可能是它与自身的多个实例发生冲突的原因。
答案1
libfltk1.3-dev
不支持多架构变体的共同安装(还?),因此您无法同时安装两者amd64
和i386
风格来同时构建 32 位和 64 位程序。 (对于libfltk1.3-dev
,这是因为该软件包包含fltk-config
;要允许多架构共同安装,需要将其拉出到一个单独的软件包中。)
目前最通用的方法是使用 chroot;如果您正在构建 Debian 软件包,那么sbuild
开箱即用地支持多种架构,否则您需要使用debootstrap
手动。