Igor68 0 8 августа, 2021 Опубликовано 8 августа, 2021 (изменено) · Жалоба Скачал linux-2.6.27 (именно такая версия на плате AT91SAM9260 уже установлена - прибыла из Китая). Моя цель это собрать загружаемый модуль. Формировал заголовки так: root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# make ARCH=arm at91_dt_defconfig # # No change to .config # root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# make ARCH=arm INSTALL_HDR_PATH=/usr/src/linux-headers headers_install INSTALL /usr/src/linux-headers/include root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# Как Вы заметили это не та версия - взято для пробы (родная 2.6.27 тут глючит) Версия собрана с возможностью загрузки модулей (insmod и подобное). Но вот получить linux-hesders не выходит. При компиляции выводит: igor@DebTool:~/coding/My_AT91SAM9260_board/testmod$ make arm-linux-gnueabi-gcc -Wall -DMODULE -D__KERNEL__ -DLINUX -v -I/usr/src/linux-kernel/include -c lkm_example.c Using built-in specs. COLLECT_GCC=arm-linux-gnueabi-gcc Target: arm-linux-gnueabi Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armel-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armel-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armel-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv4t --with-float=soft --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include Thread model: posix gcc version 6.3.0 20170516 (Debian 6.3.0-18) COLLECT_GCC_OPTIONS='-Wall' '-D' 'MODULE' '-D' '__KERNEL__' '-D' 'LINUX' '-v' '-I' '/usr/src/linux-headers/include' '-c' '-march=armv4t' '-mfloat-abi=soft' '-mtls-dialect=gnu' /usr/lib/gcc-cross/arm-linux-gnueabi/6/cc1 -quiet -v -I /usr/src/linux-kernel/include -imultilib . -imultiarch arm-linux-gnueabi -D MODULE -D __KERNEL__ -D LINUX lkm_example.c -quiet -dumpbase lkm_example.c -march=armv4t -mfloat-abi=soft -mtls-dialect=gnu -auxbase lkm_example -Wall -version -o /tmp/ccZ8lVED.s GNU C11 (Debian 6.3.0-18) version 6.3.0 20170516 (arm-linux-gnueabi) compiled by GNU C version 6.3.0 20170516, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128627 ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabi" ignoring nonexistent directory "/usr/include/arm-linux-gnueabi" ignoring nonexistent directory "/usr/src/linux-kernel/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc-cross/arm-linux-gnueabi/6/include /usr/lib/gcc-cross/arm-linux-gnueabi/6/include-fixed /usr/lib/gcc-cross/arm-linux-gnueabi/6/../../../../arm-linux-gnueabi/include /usr/include End of search list. GNU C11 (Debian 6.3.0-18) version 6.3.0 20170516 (arm-linux-gnueabi) compiled by GNU C version 6.3.0 20170516, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128627 Compiler executable checksum: 98cf8fba2b5ed54b1eab753188c32fd6 lkm_example.c:3:24: fatal error: linux/init.h: Нет такого файла или каталога #include <linux/init.h> ^ compilation terminated. Makefile:16: ошибка выполнения рецепта для цели «lkm_example.o» make: *** [lkm_example.o] Ошибка 1 igor@DebTool:~/coding/My_AT91SAM9260_board/testmod$ Вот Makefile: ###### obj-m += lkm_example.o #all: # make ARCH=armv5t CROSS_COMPILE=arm-linux-gnueabi- -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules #clean: # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean CC := arm-linux-gnueabi-gcc MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX -v INC := -I/usr/src/linux-headers/include #LD := #-L/usr/local/arm-linux/lib lkm_example.o: lkm_example.c #/usr/src/linux-2.6.27.10/include/version.h $(CC) $(MODCFLAGS) $(INC) -c lkm_example.c # echo insmod hello.o to turn it on # echo rmmod hello to turn if off # echo # echo X and kernel programming do not mix. # echo Do the insmod and rmmod from outside X. он взят из примеров (редактировался не раз - перебирал много вариантов) вот простой пример кода: // #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Robert W. Oliver II"); MODULE_DESCRIPTION("A simple example Linux module."); MODULE_VERSION("0.01"); static int __init lkm_example_init(void) { printk(KERN_INFO "Hello, World!\n"); return 0; } static void __exit lkm_example_exit(void) { printk(KERN_INFO "Goodbye, World!\n"); } module_init(lkm_example_init); module_exit(lkm_example_exit); Не выходит собрать. И прблема я думаю в корректности /usr/src/linux-headers Какой вариант решения может быть? Спасибо! Изменено 8 августа, 2021 пользователем Овчинников Игорь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 8 августа, 2021 Опубликовано 8 августа, 2021 · Жалоба 3 hours ago, Овчинников Игорь said: Скачал linux-2.6.27 (именно такая версия на плате AT91SAM9260 уже установлена - прибыла из Китая). Моя цель это собрать загружаемый модуль. Формировал заголовки так: root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# make ARCH=arm at91_dt_defconfig # # No change to .config # root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# make ARCH=arm INSTALL_HDR_PATH=/usr/src/linux-headers headers_install INSTALL /usr/src/linux-headers/include root@DebTool:/home/igor/coding/My_AT91SAM9260_board/linux-at91-wilc_15_4_1# Как Вы заметили это не та версия - взято для пробы (родная 2.6.27 тут глючит) Версия собрана с возможностью загрузки модулей (insmod и подобное). Но вот получить linux-hesders не выходит. При компиляции выводит: igor@DebTool:~/coding/My_AT91SAM9260_board/testmod$ make arm-linux-gnueabi-gcc -Wall -DMODULE -D__KERNEL__ -DLINUX -v -I/usr/src/linux-kernel/include -c lkm_example.c Using built-in specs. COLLECT_GCC=arm-linux-gnueabi-gcc Target: arm-linux-gnueabi Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armel-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armel-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armel-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-sjlj-exceptions --with-arch=armv4t --with-float=soft --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-linux-gnueabi --program-prefix=arm-linux-gnueabi- --includedir=/usr/arm-linux-gnueabi/include Thread model: posix gcc version 6.3.0 20170516 (Debian 6.3.0-18) COLLECT_GCC_OPTIONS='-Wall' '-D' 'MODULE' '-D' '__KERNEL__' '-D' 'LINUX' '-v' '-I' '/usr/src/linux-headers/include' '-c' '-march=armv4t' '-mfloat-abi=soft' '-mtls-dialect=gnu' /usr/lib/gcc-cross/arm-linux-gnueabi/6/cc1 -quiet -v -I /usr/src/linux-kernel/include -imultilib . -imultiarch arm-linux-gnueabi -D MODULE -D __KERNEL__ -D LINUX lkm_example.c -quiet -dumpbase lkm_example.c -march=armv4t -mfloat-abi=soft -mtls-dialect=gnu -auxbase lkm_example -Wall -version -o /tmp/ccZ8lVED.s GNU C11 (Debian 6.3.0-18) version 6.3.0 20170516 (arm-linux-gnueabi) compiled by GNU C version 6.3.0 20170516, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128627 ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabi" ignoring nonexistent directory "/usr/include/arm-linux-gnueabi" ignoring nonexistent directory "/usr/src/linux-kernel/include" #include "..." search starts here: #include <...> search starts here: /usr/lib/gcc-cross/arm-linux-gnueabi/6/include /usr/lib/gcc-cross/arm-linux-gnueabi/6/include-fixed /usr/lib/gcc-cross/arm-linux-gnueabi/6/../../../../arm-linux-gnueabi/include /usr/include End of search list. GNU C11 (Debian 6.3.0-18) version 6.3.0 20170516 (arm-linux-gnueabi) compiled by GNU C version 6.3.0 20170516, GMP version 6.1.2, MPFR version 3.1.5, MPC version 1.0.3, isl version 0.15 GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128627 Compiler executable checksum: 98cf8fba2b5ed54b1eab753188c32fd6 lkm_example.c:3:24: fatal error: linux/init.h: Нет такого файла или каталога #include <linux/init.h> ^ compilation terminated. Makefile:16: ошибка выполнения рецепта для цели «lkm_example.o» make: *** [lkm_example.o] Ошибка 1 igor@DebTool:~/coding/My_AT91SAM9260_board/testmod$ Вот Makefile: ###### obj-m += lkm_example.o #all: # make ARCH=armv5t CROSS_COMPILE=arm-linux-gnueabi- -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules #clean: # make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean CC := arm-linux-gnueabi-gcc MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX -v INC := -I/usr/src/linux-headers/include #LD := #-L/usr/local/arm-linux/lib lkm_example.o: lkm_example.c #/usr/src/linux-2.6.27.10/include/version.h $(CC) $(MODCFLAGS) $(INC) -c lkm_example.c # echo insmod hello.o to turn it on # echo rmmod hello to turn if off # echo # echo X and kernel programming do not mix. # echo Do the insmod and rmmod from outside X. он взят из примеров (редактировался не раз - перебирал много вариантов) вот простой пример кода: // #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("Robert W. Oliver II"); MODULE_DESCRIPTION("A simple example Linux module."); MODULE_VERSION("0.01"); static int __init lkm_example_init(void) { printk(KERN_INFO "Hello, World!\n"); return 0; } static void __exit lkm_example_exit(void) { printk(KERN_INFO "Goodbye, World!\n"); } module_init(lkm_example_init); module_exit(lkm_example_exit); Не выходит собрать. И прблема я думаю в корректности /usr/src/linux-headers Какой вариант решения может быть? Спасибо! Уже неделю ищу, ковыряюсь... Перебрал множество всего... и варианты всякие. Для PC собирается без проблем, а для платы никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 августа, 2021 Опубликовано 8 августа, 2021 · Жалоба 37 minutes ago, Овчинников Игорь said: ignoring nonexistent directory "/usr/src/linux-kernel/include" Чтобы собрать модуль, нужны хидеры и конфиг. Если последнего нет, то проще накатить на плату что-нибудь свежее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 8 августа, 2021 Опубликовано 8 августа, 2021 · Жалоба 4 minutes ago, aaarrr said: Чтобы собрать модуль, нужны хидеры и конфиг. Если последнего нет, то проще накатить на плату что-нибудь свежее. Позже точно буду накатывать сежее... но вот надо научится извлекать из исходников эти хидеры и кофиг. Вроде всё делал как: root@DebTool:/usr/src/linux-at91-wilc_15_4_1# ls arch/arm/configs am200epdkit_defconfig ebsa110_defconfig lpc18xx_defconfig omap2plus_defconfig socfpga_defconfig aspeed_g4_defconfig efm32_defconfig lpc32xx_defconfig orion5x_defconfig spear13xx_defconfig aspeed_g5_defconfig em_x270_defconfig lpd270_defconfig oxnas_v6_defconfig spear3xx_defconfig assabet_defconfig ep93xx_defconfig lubbock_defconfig palmz72_defconfig spear6xx_defconfig at91_dt_defconfig eseries_pxa_defconfig magician_defconfig pcm027_defconfig spitz_defconfig axm55xx_defconfig exynos_defconfig mainstone_defconfig pleb_defconfig stm32_defconfig badge4_defconfig ezx_defconfig milbeaut_m10v_defconfig prima2_defconfig sunxi_defconfig bcm2835_defconfig footbridge_defconfig mini2440_defconfig pxa168_defconfig tango4_defconfig cerfcube_defconfig gemini_defconfig mmp2_defconfig pxa255-idp_defconfig tct_hammer_defconfig clps711x_defconfig h3600_defconfig moxart_defconfig pxa3xx_defconfig tegra_defconfig cm_x2xx_defconfig h5000_defconfig mps2_defconfig pxa910_defconfig trizeps4_defconfig cm_x300_defconfig hackkit_defconfig multi_v4t_defconfig pxa_defconfig u300_defconfig cns3420vb_defconfig hisi_defconfig multi_v5_defconfig qcom_defconfig u8500_defconfig colibri_pxa270_defconfig imote2_defconfig multi_v7_defconfig realview_defconfig versatile_defconfig colibri_pxa300_defconfig imx_v4_v5_defconfig mv78xx0_defconfig rpc_defconfig vexpress_defconfig collie_defconfig imx_v6_v7_defconfig mvebu_v5_defconfig s3c2410_defconfig vf610m4_defconfig corgi_defconfig integrator_defconfig mvebu_v7_defconfig s3c6400_defconfig viper_defconfig davinci_all_defconfig iop32x_defconfig mxs_defconfig s5pv210_defconfig vt8500_v6_v7_defconfig dove_defconfig ixp4xx_defconfig neponset_defconfig sama5_defconfig xcep_defconfig dram_0x00000000.config jornada720_defconfig netwinder_defconfig shannon_defconfig zeus_defconfig dram_0xc0000000.config keystone_defconfig nhk8815_defconfig shmobile_defconfig zx_defconfig dram_0xd0000000.config lart_defconfig omap1_defconfig simpad_defconfig root@DebTool:/usr/src/linux-at91-wilc_15_4_1# make ARCH=arm at91_dt_defconfig # # No change to .config # root@DebTool:/usr/src/linux-at91-wilc_15_4_1# Что не так: потом делаю: root@DebTool:/usr/src/linux-at91-wilc_15_4_1# make ARCH=arm INSTALL_HDR_PATH=/usr/src/linux-headers headers_install INSTALL /usr/src/linux-headers/include root@DebTool:/usr/src/linux-at91-wilc_15_4_1# Или надо вручную собирать? Ведь всё-равно надо будет. Хоть глазком бы взлянуть на готовую /usr/src/linux-headers для ARM, а не для машины ПК с Debian, которая получена из исходников ядра. Может что не так делыю? Может надо вручную файлы копировать? И надо конфиг вручную писать? Вот отрывок .config в директории исходников ядра после вышеуказанных манипуляций: # # CPU Core family selection # # CONFIG_ARCH_MULTI_V4 is not set CONFIG_ARCH_MULTI_V4T=y CONFIG_ARCH_MULTI_V5=y CONFIG_ARCH_MULTI_V4_V5=y # CONFIG_ARCH_MULTI_V6 is not set # CONFIG_ARCH_MULTI_V7 is not set # end of Multiple platform selection # CONFIG_MACH_ASM9260 is not set # CONFIG_ARCH_ASPEED is not set CONFIG_ARCH_AT91=y CONFIG_SOC_AT91RM9200=y CONFIG_SOC_AT91SAM9=y CONFIG_SOC_SAM9X60=y Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 8 августа, 2021 Опубликовано 8 августа, 2021 · Жалоба Если вы хотите извлечь все необходимое для сборки модуля (типа linux-headers на ПК), то руками, или см. https://patchwork.kernel.org/project/linux-kbuild/patch/[email protected]/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 8 августа, 2021 Опубликовано 8 августа, 2021 (изменено) · Жалоба 1 hour ago, aaarrr said: Если вы хотите извлечь все необходимое для сборки модуля (типа linux-headers на ПК), то руками, или см. https://patchwork.kernel.org/project/linux-kbuild/patch/[email protected]/ Спасибо! Скажу правду: для меня всё это новое! Но для РУКАМИ мне надо образец... готовый образец. Буду курить... Патчить (утилита patch) пока не умею, буду вручную... вроде там не много. Изменено 8 августа, 2021 пользователем Овчинников Игорь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба On 8/8/2021 at 1:52 PM, aaarrr said: Если вы хотите извлечь все необходимое для сборки модуля (типа linux-headers на ПК), то руками, или см. https://patchwork.kernel.org/project/linux-kbuild/patch/[email protected]/ Спасибо за ответ! Есть ещё один вопрос: Я не имею опыта в этом... а вопрос в том если собирать модули, могу ли я применять версии исходников Linux-2.6.xx (где xx-иное от моей версии число) В данном случае: -bash-3.2$ uname -a Linux My_AT91SAM9263_board 2.6.27 #2 Sun Feb 8 16:11:45 PST 2015 armv5tejl GNU/Linux -bash-3.2$ Могу ли я применять версию исходников linux-2.6.32 для сборки. Мои испытания показали: Имеем MOXA UC-7112-LX-Plus: root@Moxa:/lib/modules/2.6.9-uc0/kernel/net/8021q# uname -a Linux Moxa 2.6.9-uc0 #5 Wed Jun 28 14:35:20 CST 2017 armv4tl unknown root@Moxa:/lib/modules/2.6.9-uc0/kernel/net/8021q# insmod 8021q.ko root@Moxa:/lib/modules/2.6.9-uc0/kernel/net/8021q# lsmod Module Size Used by Not tainted 8021q 11592 0 root@Moxa:/lib/modules/2.6.9-uc0/kernel/net/8021q# В то время слопированный с неё модуль на плату: bash-3.2# uname -a Linux My_AT91SAM9263_board 2.6.27 #2 Sun Feb 8 16:11:45 PST 2015 armv5tejl GNU/Linux bash-3.2# insmod 8021q.ko insmod: can't insert '8021q.ko': invalid module format bash-3.2# Ранее этот модуль был скопирован на UC-7112-LX-Plus с IA240LX (оба контроллера производителя MOXA). Насколько должна быть точны числа версии, и можно ли брать другую версию исходников (в моём случае вместо 2.6.27 применить 2.6.32). Может надо указывать что-то еще для сборки. Скачанный мной linux-2.6.27 по моему сильно не рабочий в плане как конфигурации, так и прочего. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба Можно использовать ключ -f для принудительной загрузки модуля. Но работоспособность, понятное дело, не гарантируется. 47 minutes ago, Овчинников Игорь said: Скачанный мной linux-2.6.27 по моему сильно не рабочий в плане как конфигурации, так и прочего. Ему нужен gcc версии 4.x Посмотрите, нет ли .dts для вашей платы. Лучше уж собрать и залить свежую систему, чем оживлять 2.6 без исходников. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 10 августа, 2021 Опубликовано 10 августа, 2021 (изменено) · Жалоба по поводу наличия кросс компилятора; igor@debian1:~/coding/GCC/linux-master/include/linux$ arm arm2hpdl arm-linux-gnueabihf-gcc arm-linux-gnueabi-ranlib arm-linux-gnueabi-addr2line arm-linux-gnueabihf-gcc-6 arm-linux-gnueabi-readelf arm-linux-gnueabi-ar arm-linux-gnueabihf-gcc-ar arm-linux-gnueabi-size arm-linux-gnueabi-as arm-linux-gnueabihf-gcc-ar-6 arm-linux-gnueabi-strings arm-linux-gnueabi-c++filt arm-linux-gnueabihf-gcc-nm arm-linux-gnueabi-strip arm-linux-gnueabi-cpp arm-linux-gnueabihf-gcc-nm-6 arm-none-eabi-addr2line arm-linux-gnueabi-cpp-6 arm-linux-gnueabihf-gcc-ranlib arm-none-eabi-ar arm-linux-gnueabi-dwp arm-linux-gnueabihf-gcc-ranlib-6 arm-none-eabi-as arm-linux-gnueabi-elfedit arm-linux-gnueabihf-gcov arm-none-eabi-c++ arm-linux-gnueabi-gcc arm-linux-gnueabihf-gcov-6 arm-none-eabi-c++filt arm-linux-gnueabi-gcc-6 arm-linux-gnueabihf-gcov-dump arm-none-eabi-cpp arm-linux-gnueabi-gcc-ar arm-linux-gnueabihf-gcov-dump-6 arm-none-eabi-elfedit arm-linux-gnueabi-gcc-ar-6 arm-linux-gnueabihf-gcov-tool arm-none-eabi-g++ arm-linux-gnueabi-gcc-nm arm-linux-gnueabihf-gcov-tool-6 arm-none-eabi-gcc arm-linux-gnueabi-gcc-nm-6 arm-linux-gnueabihf-gprof arm-none-eabi-gcc-5.4.1 arm-linux-gnueabi-gcc-ranlib arm-linux-gnueabihf-ld arm-none-eabi-gcc-ar arm-linux-gnueabi-gcc-ranlib-6 arm-linux-gnueabihf-ld.bfd arm-none-eabi-gcc-nm arm-linux-gnueabi-gcov arm-linux-gnueabihf-ld.gold arm-none-eabi-gcc-ranlib arm-linux-gnueabi-gcov-6 arm-linux-gnueabihf-nm arm-none-eabi-gcov arm-linux-gnueabi-gcov-dump arm-linux-gnueabihf-objcopy arm-none-eabi-gcov-tool arm-linux-gnueabi-gcov-dump-6 arm-linux-gnueabihf-objdump arm-none-eabi-gprof arm-linux-gnueabi-gcov-tool arm-linux-gnueabihf-ranlib arm-none-eabi-ld arm-linux-gnueabi-gcov-tool-6 arm-linux-gnueabihf-readelf arm-none-eabi-ld.bfd arm-linux-gnueabi-gprof arm-linux-gnueabihf-size arm-none-eabi-nm arm-linux-gnueabihf-addr2line arm-linux-gnueabihf-strings arm-none-eabi-objcopy arm-linux-gnueabihf-ar arm-linux-gnueabihf-strip arm-none-eabi-objdump arm-linux-gnueabihf-as arm-linux-gnueabi-ld arm-none-eabi-ranlib arm-linux-gnueabihf-c++filt arm-linux-gnueabi-ld.bfd arm-none-eabi-readelf arm-linux-gnueabihf-cpp arm-linux-gnueabi-ld.gold arm-none-eabi-size arm-linux-gnueabihf-cpp-6 arm-linux-gnueabi-nm arm-none-eabi-strings arm-linux-gnueabihf-dwp arm-linux-gnueabi-objcopy arm-none-eabi-strip arm-linux-gnueabihf-elfedit arm-linux-gnueabi-objdump igor@debian1:~/coding/GCC/linux-master/include/linux$ Вот: igor@debian1:~/coding/GCC/linux-master/include/linux$ igor@debian1:~/coding/GCC/linux-master$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules CHK include/linux/version.h make[1]: «include/asm-arm/mach-types.h» не требует обновления. CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s In file included from include/linux/compiler.h:40:0, from include/linux/stddef.h:4, from include/linux/posix_types.h:4, from include/linux/types.h:14, from include/linux/page-flags.h:8, from kernel/bounds.c:9: include/linux/compiler-gcc.h:86:30: fatal error: linux/compiler-gcc6.h: Нет такого файла или каталога #include gcc_header(__GNUC__) ^ compilation terminated. /home/igor/coding/GCC/linux-master/./Kbuild:35: ошибка выполнения рецепта для цели «kernel/bounds.s» make[1]: *** [kernel/bounds.s] Ошибка 1 Makefile:986: ошибка выполнения рецепта для цели «prepare0» make: *** [prepare0] Ошибка 2 igor@debian1:~/coding/GCC/linux-master$ и uname -a: igor@debian1:~/coding/GCC/linux-master$ uname -a Linux debian1 4.9.0-16-686-pae #1 SMP Debian 4.9.272-2 (2021-07-19) i686 GNU/Linux igor@debian1:~/coding/GCC/linux-master$ Пробую кроссуомпиляцию параллельно на трёх машинах: 1. Debian 10 на NUC7PJYH 2. Виртуальная машина с Debian 9 на том же NUC7PJYH 3. Старая машина (доступ по SSH) c Debian 9 Задача научится конфигурировать всё для сборки модулей ну и в последствии ядра, а так же собирать всё это. А это на виртуальной машине: igor@DebTool:~/coding/My_AT91SAM9260_board/linux-master$ igor@DebTool:~/coding/My_AT91SAM9260_board/linux-master$ make ARCH=arm CROCC_COMPILE=arm-linux-gnueabi- modules CHK include/linux/version.h make[1]: «include/asm-arm/mach-types.h» не требует обновления. CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s gcc: error: unrecognized argument in option ‘-mabi=apcs-gnu’ gcc: note: valid arguments to ‘-mabi=’ are: ms sysv gcc: error: unrecognized command line option ‘-mlittle-endian’ gcc: error: unrecognized command line option ‘-mapcs’; did you mean ‘-maes’? gcc: error: unrecognized command line option ‘-mno-sched-prolog’; did you mean ‘-Wno-sign-promo’? /home/igor/coding/My_AT91SAM9260_board/linux-master/./Kbuild:35: ошибка выполнения рецепта для цели «kernel/bounds.s» make[1]: *** [kernel/bounds.s] Ошибка 1 Makefile:983: ошибка выполнения рецепта для цели «prepare0» make: *** [prepare0] Ошибка 2 igor@DebTool:~/coding/My_AT91SAM9260_board/linux-master$ Изменено 10 августа, 2021 пользователем Овчинников Игорь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 11 minutes ago, Овчинников Игорь said: linux/compiler-gcc6.h: Нет такого файла или каталога Ядро 2.6 не знает о существовании GCC 6.x, можно или добавить файл compiler-gcc6.h или найти кросс-компилятор версии 4.x Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба Недавно решал подобную задачу. нужно было собрать ядро 3.7.1. Мне было проще скачать Linux 14 какой-то, но обязательно LTS. Другие дистрибутивы не могли найти свои архивы при инсталляции ПО. Ubuntu 14.04 LTS же прекарсно установился, скачал необходимые пакеты, а уже в нём я настроил и скомпилировал Crosstool-NG тоже старой версии, и собрал ядро. Может быть Вам поможет мой совет) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба Найти собранный 4.x сильно проще, чем ставить старый дистрибутив, чтобы собрать его самому в crosstool-ng. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 22 minutes ago, aaarrr said: Найти собранный 4.x сильно проще Для Вас, т.е. человека с опытом, да. Но для не очень опытного будет не лишним и иной совет. Чтобы можно было в случае проблемы, выбрать другой вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Igor68 0 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба Вот: diff --git a/include/linux/compiler-gcc6.h b/include/linux/compiler-gcc6.h new file mode 100644 index 0000000..208767a --- /dev/null +++ b/include/linux/compiler-gcc6.h @@ -0,0 +1,55 @@ +#ifndef __LINUX_COMPILER_H +#error "Please don't include <linux/compiler-gcc6.h> directly, include <linux/compiler.h> instead." +#endif + +#define __used __attribute__((__used__)) +#define __must_check __attribute__((warn_unused_result)) +#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) + +/* Mark functions as cold. gcc will assume any path leading to a call + to them will be unlikely. This means a lot of manual unlikely()s + are unnecessary now for any paths leading to the usual suspects + like BUG(), printk(), panic() etc. [but let's keep them for now for + older compilers] + + gcc also has a __attribute__((__hot__)) to move hot functions into + a special section, but I don't see any sense in this right now in + the kernel context */ +#define __cold __attribute__((__cold__)) + +#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) + +#ifndef __CHECKER__ +# define __compiletime_warning(message) __attribute__((warning(message))) +# define __compiletime_error(message) __attribute__((error(message))) +#endif /* __CHECKER__ */ + +/* + * Mark a position in code as unreachable. This can be used to + * suppress control flow warnings after asm blocks that transfer + * control elsewhere. + */ +#define unreachable() __builtin_unreachable() + +/* Mark a function definition as prohibited from being cloned. */ +#define __noclone __attribute__((__noclone__)) + +/* + * Tell the optimizer that something else uses this function or variable. + */ +#define __visible __attribute__((externally_visible)) + +/* + * 'asm goto' miscompilation is fixed in GCC 5.x version: + * + * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 + */ +#define asm_volatile_goto(x...) do { asm goto(x); } while (0) + +#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP +#define __HAVE_BUILTIN_BSWAP32__ +#define __HAVE_BUILTIN_BSWAP64__ +#define __HAVE_BUILTIN_BSWAP16__ +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ + +#define KASAN_ABI_VERSION 4 Это конечно патч, но я из него сделал(редактировал) compiler-gcc6.h и положил на место. Ну и компиляция: gor@debian1:~/coding/GCC/linux-master$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- modules CHK include/linux/version.h make[1]: «include/asm-arm/mach-types.h» не требует обновления. CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-arm CC kernel/bounds.s GEN include/linux/bounds.h CC arch/arm/kernel/asm-offsets.s GEN include/asm/asm-offsets.h CALL scripts/checksyscalls.sh CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost HOSTCC scripts/kallsyms HOSTCC scripts/conmakehash CC [M] drivers/scsi/scsi_wait_scan.o CC [M] drivers/usb/gadget/file_storage.o In file included from include/linux/blkdev.h:12:0, from drivers/usb/gadget/file_storage.c:233: include/linux/pagemap.h: In function ‘fault_in_pages_readable’: include/linux/pagemap.h:416:16: warning: variable ‘c’ set but not used [-Wunused-but-set-variable] volatile char c; ^ drivers/usb/gadget/file_storage.c: In function ‘invalidate_sub’: drivers/usb/gadget/file_storage.c:1906:16: warning: variable ‘rc’ set but not used [-Wunused-but-set-variable] unsigned long rc; ^~ drivers/usb/gadget/file_storage.c: In function ‘do_start_stop’: drivers/usb/gadget/file_storage.c:2269:13: warning: variable ‘start’ set but not used [-Wunused-but-set-variable] int loej, start; ^~~~~ drivers/usb/gadget/file_storage.c:2269:7: warning: variable ‘loej’ set but not used [-Wunused-but-set-variable] int loej, start; ^~~~ drivers/usb/gadget/file_storage.c: In function ‘check_parameters’: drivers/usb/gadget/file_storage.c:3859:6: warning: variable ‘prot’ set but not used [-Wunused-but-set-variable] int prot; ^~~~ CC [M] drivers/usb/gadget/serial.o In file included from drivers/usb/gadget/serial.c:48:0: drivers/usb/gadget/u_serial.c: In function ‘gs_write’: drivers/usb/gadget/u_serial.c:877:7: warning: variable ‘status’ set but not used [-Wunused-but-set-variable] int status; ^~~~~~ CC [M] drivers/usb/gadget/zero.o CC [M] drivers/usb/gadget/inode.o In file included from drivers/usb/gadget/inode.c:28:0: include/linux/pagemap.h: In function ‘fault_in_pages_readable’: include/linux/pagemap.h:416:16: warning: variable ‘c’ set but not used [-Wunused-but-set-variable] volatile char c; ^ LD [M] drivers/usb/gadget/g_zero.o LD [M] drivers/usb/gadget/gadgetfs.o LD [M] drivers/usb/gadget/g_file_storage.o LD [M] drivers/usb/gadget/g_serial.o Building modules, stage 2. MODPOST 5 modules CC drivers/scsi/scsi_wait_scan.mod.o LD [M] drivers/scsi/scsi_wait_scan.ko CC drivers/usb/gadget/g_file_storage.mod.o LD [M] drivers/usb/gadget/g_file_storage.ko CC drivers/usb/gadget/g_serial.mod.o LD [M] drivers/usb/gadget/g_serial.ko CC drivers/usb/gadget/g_zero.mod.o LD [M] drivers/usb/gadget/g_zero.ko CC drivers/usb/gadget/gadgetfs.mod.o LD [M] drivers/usb/gadget/gadgetfs.ko igor@debian1:~/coding/GCC/linux-master$ Благодарен за поддержку! Но дело пока не сделано. Зачем всё это? Надо делать систему управления... для прибора(извините не скажу), а требования; Bluetooth и/или WIFI + MASSORAGE + SPI + дисплей. Чую на контроллере не справлюсь. За свои деньги купил плату с расчётом, что привыкну к линукс (сборка, модули). А контроллер будет какой-нибудь Cortex с внешней RAM+ROM + некая периферия... думаю что надо сделать маленкое что-то с системой что бы можно было просто конфигурировать и впаивать в плату (прибора, устройства и пр.). Ну не ESP же предлагать для изделий........ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 10 августа, 2021 Опубликовано 10 августа, 2021 · Жалоба 3 minutes ago, Овчинников Игорь said: За свои деньги купил плату Какую? Возможно, она поддерживается в актуальных ядрах (маловероятно, если что-то сильно китайское, но все же). Начинать освоение с устаревшего - лишняя головная боль. 7 minutes ago, Овчинников Игорь said: Bluetooth и/или WIFI И с ними может быть проблема при использовании 2.6 - backporting драйверов занятие своеобразное. 14 minutes ago, Овчинников Игорь said: думаю что надо сделать маленкое что-то с системой что бы можно было просто конфигурировать и впаивать в плату (прибора, устройства и пр.) Могу порекомендовать SiP ATSAM9X60, делал на нем "linux-микросхему" - 100-ногий модуль для напаивания на несущую плату, Ethernet и 4ГБ eMMC на борту. Получилось 35x35мм. 9 minutes ago, Овчинников Игорь said: Ну не ESP же предлагать для изделий........ Почему нет, если удовлетворяет запросам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться