Kernel 在amd64主机上交叉构建i386 linux内核
我试图在amd64 Debian主机上构建一个i386 Linux内核deb包 现在,我通过设置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
——交叉编译标志来实现这一点。它对内核本身做了很好的工作。但问题是内核工具,它们仍然可以作为本地机器进行编译。由于链接器不匹配,仅更改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。见