linux - 为什么 32 位 .deb 包不能安装在 64 位 Ubuntu 上?

标签 linux gcc debian package 32bit-64bit

我的 .deb 软件包基于 32 位 Ubuntu 构建并包含使用 gcc 编译的可执行文件,但无法安装在 64 位版本的操作系统上(错误消息显示“错误的架构 i386”)。这让我感到困惑,因为我认为通常 32 位软件可以在 64 位硬件上运行,但反之则不然。

我可以使用我的 32 位机器生成一个可以安装在 64 位操作系统上的 .deb 文件吗?仅仅是使用适当的编译器标志来生成可执行文件(如果是的话,它们是什么),还是 .deb 文件本身以某种方式特定于一种处理器架构?

最佳答案

deb 安装程序可能拒绝安装您的软件包,因为它(正确地)标记有冲突的架构:字段。 i386 代码可以在 amd64 机器上执行,但它需要存在所有适当的依赖项(32 位库等)。最好为每个架构构建单独的包。

是的,您可以在 32 位机器上构建 64 位版本。这称为交叉编译,它要求您为此目的创建构建环境。首先,您可能需要查找 dpkg-cross 和 apt-cross 工具。

或者,您可以只安装一个运行 64 位操作系统的虚拟机,并在那里构建您的二级架构。

关于linux - 为什么 32 位 .deb 包不能安装在 64 位 Ubuntu 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3027774/

相关文章:

linux - 使用 GDB 在 Assembly 中修改后程序不会运行

c - gcc 中的 -ffreestanding 选项是什么?

linux - 在 debian 中更新包

bash - 在不使用bash -c的docker run中使用容器环境变量

使用 C 更改文本颜色

linux - 设置变量与环境变量 Linux(debian) Bash shell

linux - 如何获取相对于指定日期的下一小时?

linux - Puppet:vcsrepo with git,Ubuntu 和 CentOS 之间的请求格式不同

linux - 仅在特定目录中使用 find 命令查找文件,即使该文件存在于其他目录中

c++ - “lock cmpxchg”如何在汇编中工作?