我的.deb软件包建立在32位Ubuntu上,包含用gcc编译的可执行文件,不会安装在64位版本的OS上(错误消息为“Wrong Architecture i386”)。这让我感到困惑,因为我认为通常32位软件可以在64位硬件上运行,反之则不行。
我能否使用32位计算机生成一个可以安装在64位OS上的.deb文件?仅使用适当的编译器标志生成可执行文件(如果是,它们是什么)的问题,还是.deb文件本身以某种方式特定于一种处理器体系结构?
最佳答案
deb安装程序可能拒绝安装您的软件包,因为它(正确地)标有冲突的Architecture:字段。 i386代码可以在amd64机器上执行,但是它要求所有适当的依赖项(32位库等)都存在。最好为每种体系结构构建单独的软件包。
是的,您可以在32位计算机上针对64位进行构建。这称为交叉编译,它要求您为此目的创建一个构建环境。首先,您可能需要查找dpkg-cross和apt-cross工具。
或者,您可以仅安装运行64位OS的虚拟机,然后在其中构建辅助体系结构。