Kernel 在amd64主机上交叉构建i386 linux内核

Kernel 在amd64主机上交叉构建i386 linux内核,kernel,debian,cross-compiling,Kernel,Debian,Cross Compiling,我试图在amd64 Debian主机上构建一个i386 Linux内核deb包 现在,我通过设置——交叉编译标志来实现这一点。它对内核本身做了很好的工作。但问题是内核工具,它们仍然可以作为本地机器进行编译。由于链接器不匹配,仅更改HOSTCC变量无法解决此问题 我知道chroot或linux32环境可以工作。但是,它们是唯一的方法吗?应该有另一种解决方案,因为可能有人想要构建arm内核 PS:以下是我正在使用的命令: CONCURRENCY_LEVEL=8 DEB_HOST_ARCH=i386

我试图在amd64 Debian主机上构建一个i386 Linux内核deb包

现在,我通过设置
——交叉编译标志
来实现这一点。它对内核本身做了很好的工作。但问题是内核工具,它们仍然可以作为本地机器进行编译。由于链接器不匹配,仅更改
HOSTCC
变量无法解决此问题

我知道
chroot
linux32
环境可以工作。但是,它们是唯一的方法吗?应该有另一种解决方案,因为可能有人想要构建arm内核

PS:以下是我正在使用的命令:

CONCURRENCY_LEVEL=8 DEB_HOST_ARCH=i386 MAKEFLAGS="HOSTCC=/home/csl/bin/i486-linux-gnu-gcc"\
make-kpkg --rootcmd fakeroot --initrd --arch i386 --cross-compile /home/csl/bin/i486-linux-gnu- --append-to-version=-liquorix-csl binary-arch \
> >(tee stdout.log) 2> >(tee stderr.log >&2)

我是这样做的:

CONCURRENCY_LEVEL=6 DEB_HOST_ARCH=i386 setarch i386 make-kpkg --initrd --arch i386 binary-arch
  • sudo dpkg——添加架构i386
  • sudo apt get update&sudo apt get install ia32 libs gcc multilib
  • 使i386_defconfig
  • make ARCH=i386-j5 deb包装

  • 我没有时间去探索ia32 LIB是否真的需要。但我想指出的是,正如debian手册中所解释的,make kpkg已被弃用。

    我是这样做的:

    CONCURRENCY_LEVEL=6 DEB_HOST_ARCH=i386 setarch i386 make-kpkg --initrd --arch i386 binary-arch
    
  • sudo dpkg——添加架构i386
  • sudo apt get update&sudo apt get install ia32 libs gcc multilib
  • 使i386_defconfig
  • make ARCH=i386-j5 deb包装

  • 我没有时间去探索ia32 LIB是否真的需要。但我想指出的是,正如debian手册中所解释的,make kpkg已被弃用。

    我现在这样做:

    CONCURRENCY_LEVEL=6 DEB_HOST_ARCH=i386 setarch i386 make-kpkg --initrd --arch i386 binary-arch
    
    我在debian手册中没有看到任何关于make kpkg的抱怨,所以您能在debian手册中显示您的参考资料吗


    我发现真正的问题是
    脚本
    目录中包含的内核工具必须编译为本机格式,这可能有助于内核构建。但在执行DKMS时不能重用这些工具,这仅仅是因为DKMS与交叉编译冲突严重。我将手动破解破碎的交叉构建内核。

    我现在这样做:

    CONCURRENCY_LEVEL=6 DEB_HOST_ARCH=i386 setarch i386 make-kpkg --initrd --arch i386 binary-arch
    
    我在debian手册中没有看到任何关于make kpkg的抱怨,所以您能在debian手册中显示您的参考资料吗


    我发现真正的问题是
    脚本
    目录中包含的内核工具必须编译为本机格式,这可能有助于内核构建。但在执行DKMS时不能重用这些工具,这仅仅是因为DKMS与交叉编译冲突严重。我将手动破解损坏的交叉构建内核。

    是的,但make kpkg已被弃用。请参阅“是”,但不推荐使用make kpkg。见