BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 4:23 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
Здравствуйте!

Пытаюсь освоить построение кросс-компиляторов вручную. Одним из шагов нужно извлечь линуксовые заголовочные файлы. По данному мануалу это делается так:

Код:
$ 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 под фрёй собрать хочется.
Если есть мысли, прошу поделиться.

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 7:11 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
И ... да ... под Funto Linux такой проблемы нет - все извлекается нормально.

Код:
majestio@funtoo ~/Dev/src/linux-4.6.2 $ make headers_install ARCH=i386 INSTALL_HDR_PATH=$HOME/Work/test/i686-linux
  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
  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
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  HOSTLD  arch/x86/tools/relocs
  HOSTCC  scripts/unifdef
  INSTALL include/asm-generic (35 files)
  INSTALL include/drm (21 files)
  INSTALL include/linux/android (1 file)
  INSTALL include/linux/byteorder (2 files)
  INSTALL include/linux/caif (2 files)
  INSTALL include/linux/can (5 files)
  INSTALL include/linux/dvb (8 files)
  INSTALL include/linux/hdlc (1 file)
  INSTALL include/linux/hsi (2 files)
  INSTALL include/linux/iio (2 files)
  INSTALL include/linux/isdn (1 file)
  INSTALL include/linux/mmc (1 file)
  INSTALL include/linux/netfilter/ipset (4 files)
  INSTALL include/linux/netfilter (85 files)
  INSTALL include/linux/netfilter_arp (2 files)
  INSTALL include/linux/netfilter_bridge (17 files)
  INSTALL include/linux/netfilter_ipv4 (9 files)
  INSTALL include/linux/netfilter_ipv6 (12 files)
  INSTALL include/linux/nfsd (5 files)
  INSTALL include/linux/raid (2 files)
  INSTALL include/linux/spi (1 file)
  INSTALL include/linux/sunrpc (1 file)
  INSTALL include/linux/tc_act (12 files)
  INSTALL include/linux/tc_ematch (4 files)
  INSTALL include/linux/usb (11 files)
  INSTALL include/linux/wimax (1 file)
  INSTALL include/linux (427 files)
  INSTALL include/misc (1 file)
  INSTALL include/mtd (5 files)
  INSTALL include/rdma/hfi (1 file)
  INSTALL include/rdma (6 files)
  INSTALL include/scsi/fc (4 files)
  INSTALL include/scsi (4 files)
  INSTALL include/sound (11 files)
  INSTALL include/video (3 files)
  INSTALL include/xen (4 files)
  INSTALL include/uapi (0 file)
  INSTALL include/asm (65 files)

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 7:27 pm 
Не в сети

Зарегистрирован: Пн 23 мар, 2009 5:00 am
Сообщения: 1509
Откуда: Saint-Petersburg
byteswap.h это Linux-specific хидер, а ошибка ${entry:$...}: Bad substitution скорее всего вызвана тем, что /bin/sh в Linux это bash.
Теоретически, если в ./arch/x86/entry/syscalls/syscalltbl.sh поменять #!/bin/sh на #!/usr/local/bin/bash, то ошибки не должно быть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 7:58 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
olevole писал(а):
Теоретически, если в ./arch/x86/entry/syscalls/syscalltbl.sh поменять #!/bin/sh на #!/usr/local/bin/bash, то ошибки не должно быть.

Буквально 10 мин назад это делал. Не прокатило.

Более того, попробовал во всех файлах втупую заменить:
Код:
find ./ -type f -exec sed -i -r 's/#!\/bin\/sh/#!\/usr\/local\/bin\/bash/g' {} \;

Без изменений :(

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 9:19 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5115
Откуда: Москва
Достаточно заглянуть в Makefile и увидеть что syscalltbl.sh явно запускается через шелл, определённый в ${CONFIG_SHELL} - его, видимо, и надо установить в /usr/local/bin/bash. Что до заголовков, то похоже всё сложно. Предположу что оно завязано на glibc, значит, по-хорошему, нужно собрать glibc под FreeBSD (не знаю насколько это вообще возможно), и указать HOSTCFLAGS="-nostdinc -isystem /path/to/glibc/headers" и что-то похожее для линковки. Ну либо лепить над libc минимальную нашлёпку для совместимости с glibc чтобы собрать ядро - реализовывать этот самый byteswap.h и всё что оно ещё попросит. И да, я вообще не понимаю зачем вам заголовки ядра. Для кросс-компиляции под Linux нужна glibc, а не ядро.

As a side note, я лично в кросс-компиляцию не верю - с ней всё всегда криво и сложно. Проще создать нативную среду в виртуалке или chroot и собираться в ней. CI по вкусу для удобства, чтобы вообще ни о чём не думать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 11:37 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
AMDmi3 писал(а):
И да, я вообще не понимаю зачем вам заголовки ядра. Для кросс-компиляции под Linux нужна glibc, а не ядро.

Из одного "мануала":

Цитата:
This step installs the Linux kernel header files to /opt/cross/aarch64-linux/include, which will ultimately allow programs built using our new toolchain to make system calls to the AArch64 kernel in the target environment.
Код:
$ cd linux-3.17.2
$ make ARCH=arm64 INSTALL_HDR_PATH=/opt/cross/aarch64-linux headers_install
$ cd ..

Из второго "мануала":

Цитата:
Obtain the operating system headers
The operating system headers are necessary for getting the information the
compiler needs for the system function calls that the target platform supports.
For Linux targets, the best way to obtain the headers is to download the latest
copy of the appropriate kernel. (I used the generic kernel in the previous panel.)
You'll need to do a basic configuration of the kernel so that the correct headers
are generated for you to copy; you don't, however, need to build or compile the
kernel. For my sample target, i386-linux, the necessary steps are:
$ cd linux-2.6.9
$ make ARCH=i386 CROSS_COMPILE=i386-linux- menuconfig
Note that the trailing hyphen above is not a typo. By running the command
above, you'll be prompted to configure the components for the kernel. Because
you don't need to worry too much about the contents of the kernel itself, you
can just use the default options, save the configuration, and quit the tool.
Now, you need to copy the headers to your target directory:
$ mkdir -p $TARGET_PREFIX/include
$ cp -r include/linux $TARGET_PREFIX/include
$ cp -r include/asm-i386 $TARGET_PREFIX/include/asm
$ cp -r include/asm-generic $TARGET_PREFIX/include/
Obviously I've made some assumptions in the code above based on the sample
target. If you were building for a PowerPC target, you would have copied files
from asm-ppc.


AMDmi3 писал(а):
As a side note, я лично в кросс-компиляцию не верю - с ней всё всегда криво и сложно.

Ну для Винды я собрал 8 тулчейнов со всем фаршем, включая Qt 5.6.0 (без mysqlconnector'а и webkit только shared-версии). Все это включено в QtCreator'е. Крайне удобно.
Код:
drwxr-xr-x  18 majestio  majestio   18 11 июн 17:55 .
drwxr-xr-x  12 majestio  majestio   24 20 июн 04:55 ..
drwxr-xr-x   2 majestio  majestio  323 20 июн 04:02 bin
drwxr-xr-x  12 majestio  majestio   12 19 июн 21:43 i686-w64-mingw32.shared
drwxr-xr-x  12 majestio  majestio   12 20 июн 02:11 i686-w64-mingw32.shared.posix
drwxr-xr-x  12 majestio  majestio   12 19 июн 20:31 i686-w64-mingw32.static
drwxr-xr-x  12 majestio  majestio   12 20 июн 01:03 i686-w64-mingw32.static.posix
drwxr-xr-x   2 majestio  majestio    2 11 июн 16:10 include
drwxr-xr-x   2 majestio  majestio    5 11 июн 15:42 installed
drwxr-xr-x   3 majestio  majestio    3 11 июн 16:10 lib
drwxr-xr-x   3 majestio  majestio    3 11 июн 16:10 libexec
dr-xr-xr-x   2 majestio  majestio    3 11 июн 15:42 readonly
drwxr-xr-x   6 majestio  majestio    6 11 июн 16:16 share
drwxr-xr-x   8 majestio  majestio    8 11 июн 15:51 x86_64-unknown-freebsd10.3
drwxr-xr-x  12 majestio  majestio   12 19 июн 23:56 x86_64-w64-mingw32.shared
drwxr-xr-x  12 majestio  majestio   12 20 июн 04:24 x86_64-w64-mingw32.shared.posix
drwxr-xr-x  12 majestio  majestio   12 19 июн 22:50 x86_64-w64-mingw32.static
drwxr-xr-x  12 majestio  majestio   12 20 июн 03:18 x86_64-w64-mingw32.static.posix

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Вт 21 июн, 2016 11:44 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
AMDmi3, но тут "странность" в другом, и я это указал в самом первом сообщении - линуксовые заголовки не собираются только под i386. Под другие архитектуры - все нормально. Парадокс.

Код:
majestio@freebsd:~/Dev/src/linux-4.6.2% gmake headers_install ARCH=arm INSTALL_HDR_PATH=$HOME/Work/test/arm-linux                                              CHK     include/generated/uapi/linux/version.h
  UPD     include/generated/uapi/linux/version.h
  HOSTCC  scripts/basic/fixdep
  WRAP    arch/arm/include/generated/asm/bitsperlong.h
  WRAP    arch/arm/include/generated/asm/clkdev.h
  WRAP    arch/arm/include/generated/asm/cputime.h
  WRAP    arch/arm/include/generated/asm/current.h
  WRAP    arch/arm/include/generated/asm/early_ioremap.h
  WRAP    arch/arm/include/generated/asm/emergency-restart.h
  WRAP    arch/arm/include/generated/asm/errno.h
  WRAP    arch/arm/include/generated/asm/exec.h
  WRAP    arch/arm/include/generated/asm/ioctl.h
  WRAP    arch/arm/include/generated/asm/ipcbuf.h
  WRAP    arch/arm/include/generated/asm/irq_regs.h
  WRAP    arch/arm/include/generated/asm/kdebug.h
  WRAP    arch/arm/include/generated/asm/local.h
  WRAP    arch/arm/include/generated/asm/local64.h
  WRAP    arch/arm/include/generated/asm/mm-arch-hooks.h
  WRAP    arch/arm/include/generated/asm/msgbuf.h
  WRAP    arch/arm/include/generated/asm/msi.h
  WRAP    arch/arm/include/generated/asm/param.h
  WRAP    arch/arm/include/generated/asm/parport.h
  WRAP    arch/arm/include/generated/asm/poll.h
  WRAP    arch/arm/include/generated/asm/preempt.h
  WRAP    arch/arm/include/generated/asm/resource.h
  WRAP    arch/arm/include/generated/asm/rwsem.h
  WRAP    arch/arm/include/generated/asm/seccomp.h
  WRAP    arch/arm/include/generated/asm/segment.h
  WRAP    arch/arm/include/generated/asm/sembuf.h
  WRAP    arch/arm/include/generated/asm/serial.h
  WRAP    arch/arm/include/generated/asm/shmbuf.h
  WRAP    arch/arm/include/generated/asm/siginfo.h
  WRAP    arch/arm/include/generated/asm/simd.h
  WRAP    arch/arm/include/generated/asm/sizes.h
  WRAP    arch/arm/include/generated/asm/socket.h
  WRAP    arch/arm/include/generated/asm/sockios.h
  WRAP    arch/arm/include/generated/asm/termbits.h
  WRAP    arch/arm/include/generated/asm/termios.h
  WRAP    arch/arm/include/generated/asm/timex.h
  WRAP    arch/arm/include/generated/asm/trace_clock.h
  WRAP    arch/arm/include/generated/asm/unaligned.h
  HOSTCC  scripts/unifdef
  INSTALL include/asm-generic (35 files)
  INSTALL include/drm (21 files)
  INSTALL include/linux/android (1 file)
  INSTALL include/linux/byteorder (2 files)
  INSTALL include/linux/caif (2 files)
  INSTALL include/linux/can (5 files)
  INSTALL include/linux/dvb (8 files)
  INSTALL include/linux/hdlc (1 file)
  INSTALL include/linux/hsi (2 files)
  INSTALL include/linux/iio (2 files)
  INSTALL include/linux/isdn (1 file)
  INSTALL include/linux/mmc (1 file)
  INSTALL include/linux/netfilter/ipset (4 files)
  INSTALL include/linux/netfilter (85 files)
  INSTALL include/linux/netfilter_arp (2 files)
  INSTALL include/linux/netfilter_bridge (17 files)
  INSTALL include/linux/netfilter_ipv4 (9 files)
  INSTALL include/linux/netfilter_ipv6 (12 files)
  INSTALL include/linux/nfsd (5 files)
  INSTALL include/linux/raid (2 files)
  INSTALL include/linux/spi (1 file)
  INSTALL include/linux/sunrpc (1 file)
  INSTALL include/linux/tc_act (12 files)
  INSTALL include/linux/tc_ematch (4 files)
  INSTALL include/linux/usb (11 files)
  INSTALL include/linux/wimax (1 file)
  INSTALL include/linux (426 files)
  INSTALL include/misc (1 file)
  INSTALL include/mtd (5 files)
  INSTALL include/rdma/hfi (1 file)
  INSTALL include/rdma (6 files)
  INSTALL include/scsi/fc (4 files)
  INSTALL include/scsi (4 files)
  INSTALL include/sound (11 files)
  INSTALL include/video (3 files)
  INSTALL include/xen (4 files)
  INSTALL include/uapi (0 file)
  INSTALL include/asm (34 files)

Код:
majestio@freebsd:~/Dev/src/linux-4.6.2% gmake headers_install ARCH=arm64 INSTALL_HDR_PATH=$HOME/Work/test/aarch64-linux
  CHK     include/generated/uapi/linux/version.h
  UPD     include/generated/uapi/linux/version.h
  HOSTCC  scripts/basic/fixdep
  WRAP    arch/arm64/include/generated/asm/bug.h
  WRAP    arch/arm64/include/generated/asm/bugs.h
  WRAP    arch/arm64/include/generated/asm/checksum.h
  WRAP    arch/arm64/include/generated/asm/clkdev.h
  WRAP    arch/arm64/include/generated/asm/cputime.h
  WRAP    arch/arm64/include/generated/asm/current.h
  WRAP    arch/arm64/include/generated/asm/delay.h
  WRAP    arch/arm64/include/generated/asm/div64.h
  WRAP    arch/arm64/include/generated/asm/dma.h
  WRAP    arch/arm64/include/generated/asm/dma-contiguous.h
  WRAP    arch/arm64/include/generated/asm/early_ioremap.h
  WRAP    arch/arm64/include/generated/asm/emergency-restart.h
  WRAP    arch/arm64/include/generated/asm/errno.h
  WRAP    arch/arm64/include/generated/asm/ftrace.h
  WRAP    arch/arm64/include/generated/asm/hw_irq.h
  WRAP    arch/arm64/include/generated/asm/ioctl.h
  WRAP    arch/arm64/include/generated/asm/ioctls.h
  WRAP    arch/arm64/include/generated/asm/ipcbuf.h
  WRAP    arch/arm64/include/generated/asm/irq_regs.h
  WRAP    arch/arm64/include/generated/asm/kdebug.h
  WRAP    arch/arm64/include/generated/asm/kmap_types.h
  WRAP    arch/arm64/include/generated/asm/kvm_para.h
  WRAP    arch/arm64/include/generated/asm/local.h
  WRAP    arch/arm64/include/generated/asm/local64.h
  WRAP    arch/arm64/include/generated/asm/mcs_spinlock.h
  WRAP    arch/arm64/include/generated/asm/mm-arch-hooks.h
  WRAP    arch/arm64/include/generated/asm/mman.h
  WRAP    arch/arm64/include/generated/asm/msgbuf.h
  WRAP    arch/arm64/include/generated/asm/msi.h
  WRAP    arch/arm64/include/generated/asm/mutex.h
  WRAP    arch/arm64/include/generated/asm/pci.h
  WRAP    arch/arm64/include/generated/asm/poll.h
  WRAP    arch/arm64/include/generated/asm/preempt.h
  WRAP    arch/arm64/include/generated/asm/resource.h
  WRAP    arch/arm64/include/generated/asm/rwsem.h
  WRAP    arch/arm64/include/generated/asm/sections.h
  WRAP    arch/arm64/include/generated/asm/segment.h
  WRAP    arch/arm64/include/generated/asm/sembuf.h
  WRAP    arch/arm64/include/generated/asm/serial.h
  WRAP    arch/arm64/include/generated/asm/shmbuf.h
  WRAP    arch/arm64/include/generated/asm/simd.h
  WRAP    arch/arm64/include/generated/asm/sizes.h
  WRAP    arch/arm64/include/generated/asm/socket.h
  WRAP    arch/arm64/include/generated/asm/sockios.h
  WRAP    arch/arm64/include/generated/asm/swab.h
  WRAP    arch/arm64/include/generated/asm/switch_to.h
  WRAP    arch/arm64/include/generated/asm/termbits.h
  WRAP    arch/arm64/include/generated/asm/termios.h
  WRAP    arch/arm64/include/generated/asm/topology.h
  WRAP    arch/arm64/include/generated/asm/trace_clock.h
  WRAP    arch/arm64/include/generated/asm/types.h
  WRAP    arch/arm64/include/generated/asm/unaligned.h
  WRAP    arch/arm64/include/generated/asm/user.h
  WRAP    arch/arm64/include/generated/asm/vga.h
  WRAP    arch/arm64/include/generated/asm/xor.h
  WRAP    arch/arm64/include/generated/uapi/asm/kvm_para.h
  HOSTCC  scripts/unifdef
  INSTALL include/asm-generic (35 files)
  INSTALL include/drm (21 files)
  INSTALL include/linux/android (1 file)
  INSTALL include/linux/byteorder (2 files)
  INSTALL include/linux/caif (2 files)
  INSTALL include/linux/can (5 files)
  INSTALL include/linux/dvb (8 files)
  INSTALL include/linux/hdlc (1 file)
  INSTALL include/linux/hsi (2 files)
  INSTALL include/linux/iio (2 files)
  INSTALL include/linux/isdn (1 file)
  INSTALL include/linux/mmc (1 file)
  INSTALL include/linux/netfilter/ipset (4 files)
  INSTALL include/linux/netfilter (85 files)
  INSTALL include/linux/netfilter_arp (2 files)
  INSTALL include/linux/netfilter_bridge (17 files)
  INSTALL include/linux/netfilter_ipv4 (9 files)
  INSTALL include/linux/netfilter_ipv6 (12 files)
  INSTALL include/linux/nfsd (5 files)
  INSTALL include/linux/raid (2 files)
  INSTALL include/linux/spi (1 file)
  INSTALL include/linux/sunrpc (1 file)
  INSTALL include/linux/tc_act (12 files)
  INSTALL include/linux/tc_ematch (4 files)
  INSTALL include/linux/usb (11 files)
  INSTALL include/linux/wimax (1 file)
  INSTALL include/linux (425 files)
  INSTALL include/misc (1 file)
  INSTALL include/mtd (5 files)
  INSTALL include/rdma/hfi (1 file)
  INSTALL include/rdma (6 files)
  INSTALL include/scsi/fc (4 files)
  INSTALL include/scsi (4 files)
  INSTALL include/sound (11 files)
  INSTALL include/video (3 files)
  INSTALL include/xen (4 files)
  INSTALL include/uapi (0 file)
  INSTALL include/asm (36 files)

Код:
majestio@freebsd:~/Dev/src/linux-4.6.2% gmake headers_install ARCH=powerpc INSTALL_HDR_PATH=$HOME/Work/test/powerpc-linux
  CHK     include/generated/uapi/linux/version.h
  UPD     include/generated/uapi/linux/version.h
  HOSTCC  scripts/basic/fixdep
  WRAP    arch/powerpc/include/generated/asm/clkdev.h
  WRAP    arch/powerpc/include/generated/asm/div64.h
  WRAP    arch/powerpc/include/generated/asm/irq_regs.h
  WRAP    arch/powerpc/include/generated/asm/irq_work.h
  WRAP    arch/powerpc/include/generated/asm/local64.h
  WRAP    arch/powerpc/include/generated/asm/mcs_spinlock.h
  WRAP    arch/powerpc/include/generated/asm/preempt.h
  WRAP    arch/powerpc/include/generated/asm/rwsem.h
  WRAP    arch/powerpc/include/generated/asm/vtime.h
  HOSTCC  scripts/unifdef
  INSTALL include/asm-generic (35 files)
  INSTALL include/drm (21 files)
  INSTALL include/linux/android (1 file)
  INSTALL include/linux/byteorder (2 files)
  INSTALL include/linux/caif (2 files)
  INSTALL include/linux/can (5 files)
  INSTALL include/linux/dvb (8 files)
  INSTALL include/linux/hdlc (1 file)
  INSTALL include/linux/hsi (2 files)
  INSTALL include/linux/iio (2 files)
  INSTALL include/linux/isdn (1 file)
  INSTALL include/linux/mmc (1 file)
  INSTALL include/linux/netfilter/ipset (4 files)
  INSTALL include/linux/netfilter (85 files)
  INSTALL include/linux/netfilter_arp (2 files)
  INSTALL include/linux/netfilter_bridge (17 files)
  INSTALL include/linux/netfilter_ipv4 (9 files)
  INSTALL include/linux/netfilter_ipv6 (12 files)
  INSTALL include/linux/nfsd (5 files)
  INSTALL include/linux/raid (2 files)
  INSTALL include/linux/spi (1 file)
  INSTALL include/linux/sunrpc (1 file)
  INSTALL include/linux/tc_act (12 files)
  INSTALL include/linux/tc_ematch (4 files)
  INSTALL include/linux/usb (11 files)
  INSTALL include/linux/wimax (1 file)
  INSTALL include/linux (426 files)
  INSTALL include/misc (1 file)
  INSTALL include/mtd (5 files)
  INSTALL include/rdma/hfi (1 file)
  INSTALL include/rdma (6 files)
  INSTALL include/scsi/fc (4 files)
  INSTALL include/scsi (4 files)
  INSTALL include/sound (11 files)
  INSTALL include/video (3 files)
  INSTALL include/xen (4 files)
  INSTALL include/uapi (0 file)
  INSTALL include/asm (44 files)

Вот как-то так :?

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Ср 22 июн, 2016 5:30 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5115
Откуда: Москва
Majestio писал(а):
но тут "странность" в другом, и я это указал в самом первом сообщении - линуксовые заголовки не собираются только под i386. Под другие архитектуры - все нормально. Парадокс.

Очевидно потому что этот relocs нужен только под i386.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Извлечь линуксовые заголовки
СообщениеДобавлено: Сб 25 июн, 2016 9:06 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт 12 сен, 2003 4:34 pm
Сообщения: 373
Откуда: Минск
Позанимался вопросом кросс-компиляции и сделал выводы:

1) Алгоритм достаточно несложный. По разным источникам набрал инфы и написал пример скрипта:
Код:
#!/bin/sh

# Секция настроек

INSTALL_PATH=/home/majestio/Work/test
TARGET=i686-pc-linux-gnu
LINUX_ARCH=i686
CFG_OPT="--disable-multilib -disable-threads"
CFG_CFLAGS="-fPIC -O2 -fno-stack-protector -U_FORTIFY_SOURCE"
JOBS=-j5
VER_ISL=0.17
VER_GMP=6.1.0
VER_MPC=1.0.3
VER_MPFR=3.1.4
VER_CLOOG=0.18.1
VER_BINUTILS=2.26
VER_GCC=6.1.0
VER_GLIBC=2.23
VER_KERNEL_H=kernel-headers-3.12.6-5

#
Skip=1

export PATH=$INSTALL_PATH/bin:$PATH
clear

if [ $Skip -ne 1 ]; then

# Грузим архивы

echo "Грузим архивы ... "

fetch http://isl.gforge.inria.fr/isl-$VER_ISL.tar.xz
fetch ftp://ftp.gnu.org/gnu/gmp/gmp-$VER_GMP.tar.xz
fetch ftp://ftp.gnu.org/gnu/mpc/mpc-$VER_MPC.tar.gz
fetch ftp://ftp.gnu.org/gnu/mpfr/mpfr-$VER_MPFR.tar.xz
fetch ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-$VER_CLOOG.tar.gz
fetch ftp://ftp.gnu.org/gnu/binutils/binutils-$VER_BINUTILS.tar.gz
fetch ftp://ftp.gnu.org/gnu/gcc/gcc-$VER_GCC/gcc-$VER_GCC.tar.bz2
fetch ftp://ftp.gnu.org/pub/gnu/glibc/glibc-$VER_GLIBC.tar.xz
fetch http://majestio.info/stuff/$VER_KERNEL_H.tar.xz

# Разархивация

echo "Разархивируем ... "

for F in *.tar*; do tar xfk $F; done

echo "Делаем симлинки на либы поддержки ... "

# Делаем симлинки в структуре GCC

cd gcc-$VER_GCC

ln -sf `ls -1d ../mpfr-*/` mpfr
ln -sf `ls -1d ../gmp-*/` gmp
ln -sf `ls -1d ../mpc-*/` mpc
ln -sf `ls -1d ../isl-*/` isl
ln -sf `ls -1d ../cloog-*/` cloog

cd ../$VER_KERNEL_H
ln -s x86 i686
cd ..

# 1. Строим Binutils

echo "Строим Binutils ... "

mkdir -p build-binutils
cd build-binutils
../binutils-$VER_BINUTILS/configure CFLSGS='$CFG_CFLAGS' --prefix=$INSTALL_PATH --target=$TARGET $CFG_OPT
gmake $JOBS
gmake install
cd ..

# 2. Копируем Linux Kernel Headers

echo "Копируем Linux заголовки ... "

cd kernel-headers-3.12.6-5
gmake headers_install ARCH=$LINUX_ARCH INSTALL_HDR_PATH=$INSTALL_PATH/$TARGET
cd ..

# 3. Компилируем C/C++ компиляторы

echo "Собираем GCC (1) ... "
mkdir -p build-gcc
cd build-gcc
../gcc-$VER_GCC/configure CFLAGS="$CFG_CFLAGS" --prefix=$INSTALL_PATH --target=$TARGET --enable-languages=c,c++
gmake $JOBS
gmake install-gcc
cd ..

# 4. Сборка заголовочных файлов и заголовков для bootstrap'а

echo "Собираем С Libs (1) ... "

mkdir -p build-glibc
cd build-glibc
../glibc-$VER_GLIBC/configure CFLAGS="$CFG_CFLAGS" --prefix=$INSTALL_PATH/$TARGET --build=$MACHTYPE --host=$TARGET --target=$TARGET --with-headers=$INSTALL_PATH/$TARGET/include $CFG_OPT libc_cv_forced_unwind=yes
gmake install-bootstrap-headers=yes install-headers
gmake $JOBS csu/subdir_lib
install csu/crt1.o csu/crti.o csu/crtn.o $INSTALL_PATH/$TARGET/lib
$TARGET-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $INSTALL_PATH/$TARGET/lib/libc.so
touch $INSTALL_PATH/$TARGET/include/gnu/stubs.h
cd ..

# 5. Сборка библиотек поддержки
   
cd build-gcc
gmake $JOBS all-target-libgcc
gmake install-target-libgcc
cd ..

fi

# 6. Стандартная Си-либа === а вот тут не растет кокос! :(

cd build-glibc
gmake $JOBS
gmake install
cd ..

exit

# 7. Стандартная С++ либа

cd build-gcc
gmake $JOBS all
gmake install
cd ..
2) А вот сам процесс упирается в необходимость написания кучи патчей. А это все и тормозит дело. Да и лениво тратить время, когда версии компиляторов и библиотек растут как грибы.
3) В сети есть не самые древние и не самые плохи варианты, например musl. Отличная альтернатива для целей i486-pc-linux-*|x86_64-pc-linux-*. Да и кросс-компилятор на фре удачно собирается. Более того - делает гораздо меньший код, нежели "родной" glibc. Ну это взгляд пока на уровне "хловорлда". Попробую собрать Qt5, а там посмотрим.

_________________
Обращаюсь на "ты". Если не устраивает - пишите в ПМ, я применю патч :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика