Здравствуйте!
Пытаюсь освоить построение кросс-компиляторов вручную. Хостовая система - FreeBSD 10.3. Одним из шагов - нужно извлечь линуксовые заголовочные файлы. По данному мануалу это делается так:
$ fetch https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.6.2.tar.xz
$ tar xf linux-4.6.2.tar.xz
$ cd linux-4.6.2
$ gmake headers_install ARCH=i386 INSTALL_HDR_PATH=$HOME/Work/test/i686-linux
Если использую «ARCH=arm», или «ARCH=arm64», или «ARCH=mips», то все проходит гладко и без вопросов. Если же как в коде выше, то получаю ошибки.
Первый запуск:
majestio@freebsd:~/Dev/src/linux-4.6.2% gmake ARCH=i386 INSTALL_HDR_PATH=$HOME/Work/test/i386-linux headers_install
CHK include/generated/uapi/linux/version.h
UPD include/generated/uapi/linux/version.h
HOSTCC scripts/basic/fixdep
WRAP arch/x86/include/generated/asm/clkdev.h
WRAP arch/x86/include/generated/asm/cputime.h
WRAP arch/x86/include/generated/asm/dma-contiguous.h
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mm-arch-hooks.h
SYSTBL arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h
./arch/x86/entry/syscalls/syscalltbl.sh: ${entry:$...}: Bad substitution
arch/x86/entry/syscalls/Makefile:49: ошибка выполнения рецепта для цели «arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h»
gmake[1]: *** [arch/x86/entry/syscalls/../../include/generated/asm/syscalls_32.h] Ошибка 2
arch/x86/Makefile:199: ошибка выполнения рецепта для цели «archheaders»
gmake: *** [archheaders] Ошибка 2
Последующие запуски:
majestio@freebsd:~/Dev/src/linux-4.6.2% gmake ARCH=i386 INSTALL_HDR_PATH=$HOME/Work/test/i386-linux headers_install
CHK include/generated/uapi/linux/version.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_64.h
SYSHDR arch/x86/entry/syscalls/../../include/generated/uapi/asm/unistd_x32.h
HOSTCC arch/x86/tools/relocs_32.o
In file included from arch/x86/tools/relocs_32.c:1:0:
arch/x86/tools/relocs.h:13:22: fatal error: byteswap.h: No such file or directory
#include <byteswap.h>
^
compilation terminated.
scripts/Makefile.host:108: ошибка выполнения рецепта для цели «arch/x86/tools/relocs_32.o»
gmake[1]: *** [arch/x86/tools/relocs_32.o] Ошибка 1
arch/x86/Makefile:193: ошибка выполнения рецепта для цели «archscripts»
gmake: *** [archscripts] Ошибка 2
А кросскомпилятор для i686-pc-linux-gnu и x86_64-pc-linux-gnu под фрёй собрать хочется. Если есть мысли, прошу поделиться - как исправить?