我正在尝试安装 NS3,但在安装此包 libc6-dev-i386 时卡住了。
sudo apt-get install cmake libc6-dev libc6-dev-i386 g++-multilib
到目前为止,我已经尝试了在谷歌上可以找到的所有可能的解决方案。
一些细节:
sudo dpkg --print-architectures
i386
我试过直接命令,
sudo apt install libc6-dev-i386
sudo dpkg --add-architecture i386
,然后尝试运行更新命令。但再次没有运气,我认为这次尝试是愚蠢的,因为我的基本架构是 i386,所以我不需要添加它(有人可以确认),但我还是尝试了。
sudo apt install -f
,尽管我不知道它-f
代表什么。我还读到这个包会随 g++ 自动安装,而我有 g++ 6.3.0。
经过所有这些尝试后,我得到了同样的错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package libc6-dev-i386
我没有找到,在网站上定位在哪里?
编辑
lsb_release -a 的 o/p,
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 17.04
Release: 17.04
Codename: zesty
uname-a--
Linux tafri-HP-Pavilion-15-Notebook-PC 4.10.0-32-generic #36-Ubuntu SMP Tue Aug 8 12:09:08 UTC 2017 i686 i686 i686 GNU/Linux
是的,我遵循了……的指示。
https://www.nsnam.org/wiki/Installation
并且,“architecture”末尾的“s”是我的错。我正在尝试使用外部命令。
答案1
在 32 位 Ubuntu 上,跳过该软件包。只需安装libc6-dev
您需要的其他软件包即可。
libc6-dev-i386
与 32 位系统相对应的特定包只是libc6-dev
,您已经正在安装它。
没有libc6-dev-i386
适用于您系统的软件包,因为它仅适用于 64 位系统。这是因为它的目的是为您提供在 64 位系统上构建和运行 32 位程序的能力。
Ubuntu支持多种架构。 为了件,这意味着大多数台式机和笔记本电脑,包括那些苹果近年来生产的,有两种:i386 用于 32 位系统,amd64 用于 64 位系统。对于本回答的其余部分,当我说“32 位”和“64 位”时,我指的是这些体系结构。(这些名称容易混淆架构有重要区别, 硬件可能同时支持两者或仅支持 i386尽管您可能需要 UEFI 系统上的 amd64 版本,你可以检查你的机器的架构或者Ubuntu 安装。
64 位处理器能够运行 64 位和 32 位本机(机器语言)代码。
- 如果您拥有64位(amd64)版本的Ubuntu,则可以自动运行64位程序。
- 您也可以运行 32 位程序,但可能需要安装 32 位支持库,包括 32 位版本的
libc6
。
大多数程序运行时都需要该libc6
软件包提供的库。Ubuntu 已安装此软件包。与 Ubuntu 中的大多数(但不是全部)软件包一样,该libc6
软件包针对不同的架构单独提供。
到创造链接到提供的库的可执行文件libc6
,您需要拥有头文件该库的依赖项。这些由包提供libc6-dev
。libc6-dev
包还将libc6
包声明为依赖项,因为通常只有头文件而没有库本身是没用的。大多数-dev
包将一些相应的非-dev
包声明为依赖项。
由于绝大多数程序都libc6
直接或间接地需要,多年来已经提供了多种在 64 位系统上安装该库及其头文件的 32 位版本的方法。
- 最通用的方法,也适用于几乎所有其他库,是使用APT 的多架构支持--多架构在所有最新的 Debian 和 Ubuntu 系统上默认启用 -跑步
dpkg --add-architecture i386
和使用apt
或apt-get
安装和包。并支持使用此语法指定要安装libc6:i386
的包的体系结构。libc6-dev:i386
apt
apt-get
:
- 但是,还有其他方法。一些常用库的 32 位 ( ) 版本以特殊软件包的
i386
形式提供。amd64
libc6-i386
和libc6-dev-i386
有两个这样的包。libc6-dev-i386
包提供不同体系结构之间不同的 32 位版本的头文件尽管声明为依赖项libc6-dev
,这对于其他的来说已经足够了,并且libc6-i386
,提供了实际的 32 位库。 - 这老的在 64 位系统上安装常见 32 位库的方法是包裹
ia32-libs
。
根据您运行的命令,似乎您尝试过两个都前两种方法之一,或两者结合。但是,您的系统既不需要也不具备这两种能力,因为它是 32 位系统。32 位系统不需要任何特殊功能即可运行 32 位程序(并且它们无法运行 64 位程序)。
答案2
该开发库libc6-dev-i386
仅在 64 位操作系统上开发 32 位软件时才需要。
根据发布的结果(有待确认),操作系统是 32 位(i386),因此不需要所述库,并且该库在存储库中可用(仅适用于 64 位 Ubuntu)。
即使没有它,安装仍可继续。