![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Zaca |
![]()
Сообщение
#11
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 22.3.2012 Пользователь №: 3281 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
тут дело не в инклюдах. а в том, что модуль ядра должен собираться в каталоге /lib/modules/<версия ядра>/build. это должен быть линк на сорцы ядра (или хотя бы хэдеры). также в каталоге /lib/modules/<версия ядра>/ должен быть линк sources - также на сорцы ядра или хэдеры. Спасибо, в понедельник попробую |
|
|
Zaca |
![]()
Сообщение
#12
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 22.3.2012 Пользователь №: 3281 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
тут дело не в инклюдах. а в том, что модуль ядра должен собираться в каталоге /lib/modules/<версия ядра>/build. это должен быть линк на сорцы ядра (или хотя бы хэдеры). также в каталоге /lib/modules/<версия ядра>/ должен быть линк sources - также на сорцы ядра или хэдеры. Вроде все так и есть. решила собрать ядро в каталоге /lib/modules/<версия ядра>/build linux-awyp:/lib/modules/2.6.27.7-9-pae/build # make bzImage make -C /usr/src/linux-2.6.27.7-9 O=/usr/src/linux-2.6.27.7-9-obj/i386/pae/. bzImage Using /usr/src/linux-2.6.27.7-9 as source for kernel GEN /usr/src/linux-2.6.27.7-9-obj/i386/pae/Makefile CHK include/linux/version.h CHK include/linux/utsrelease.h CC arch/x86/kernel/asm-offsets.s In file included from /usr/src/linux-2.6.27.7-9/include/linux/gfp.h:4, from /usr/src/linux-2.6.27.7-9/include/linux/kmod.h:22, from /usr/src/linux-2.6.27.7-9/include/linux/module.h:13, from /usr/src/linux-2.6.27.7-9/include/linux/crypto.h:21, from /usr/src/linux-2.6.27.7-9/arch/x86/kernel/asm-offsets_32.c:7, from /usr/src/linux-2.6.27.7-9/arch/x86/kernel/asm-offsets.c:2: /usr/src/linux-2.6.27.7-9/include/linux/mmzone.h:197:5: warning: "MAX_NR_ZONES" is not defined In file included from /usr/src/linux-2.6.27.7-9/include/linux/gfp.h:4, from /usr/src/linux-2.6.27.7-9/include/linux/kmod.h:22, from /usr/src/linux-2.6.27.7-9/include/linux/module.h:13, from /usr/src/linux-2.6.27.7-9/include/linux/crypto.h:21, from /usr/src/linux-2.6.27.7-9/arch/x86/kernel/asm-offsets_32.c:7, from /usr/src/linux-2.6.27.7-9/arch/x86/kernel/asm-offsets.c:2: /usr/src/linux-2.6.27.7-9/include/linux/mmzone.h:221: error: ‘MAX_NR_ZONES’ undeclared here (not in a function) make[3]: *** [arch/x86/kernel/asm-offsets.s] Error 1 make[2]: *** [prepare0] Error 2 make[1]: *** [sub-make] Error 2 make: *** [all] Error 2 завалила систему...( |
|
|
Zaca |
![]()
Сообщение
#13
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 22.3.2012 Пользователь №: 3281 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Что, больше нечего подсказать по этой теме?
|
|
|
maint |
![]()
Сообщение
#14
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Zaca |
![]()
Сообщение
#15
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 22.3.2012 Пользователь №: 3281 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Беру популярный пример из инета:
"Сам код"
Запуская Makefile - все нормально в QT Creator "Ход сборки с ошибками" Цитата 15:43:10: Выполняется сборка проекта char_dev... 15:43:10: Запускается: «/opt/QtSDK/Desktop/Qt/4.8.0/gcc/bin/qmake» /opt/QtSDK/Project/char_dev/char_dev.pro -r -spec linux-g++ 15:43:10: Процесс «/opt/QtSDK/Desktop/Qt/4.8.0/gcc/bin/qmake» завершился нормально. 15:43:10: Запускается: «/usr/bin/make» -w make: Entering directory `/opt/QtSDK/Project/char_dev-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK_______' Makefile:189: warning: overriding commands for target `chardev.o' Makefile:186: warning: ignoring old commands for target `chardev.o' gcc -c -pipe -O2 -Wall -W -I../../Desktop/Qt/4.8.0/gcc/mkspecs/linux-g++ -I../char_dev -I../char_dev -I. -o chardev.o ../char_dev/chardev.c ../char_dev/chardev.c:7:26: error: linux/module.h: No such file or directory ../char_dev/chardev.c:9:67: error: asm/uaccess.h: No such file or directory ../char_dev/chardev.c:16: warning: 'struct file' declared inside parameter list ../char_dev/chardev.c:16: warning: its scope is only this definition or declaration, which is probably not what you want ../char_dev/chardev.c:16: warning: 'struct inode' declared inside parameter list ../char_dev/chardev.c:17: warning: 'struct file' declared inside parameter list ../char_dev/chardev.c:17: warning: 'struct inode' declared inside parameter list ../char_dev/chardev.c:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'device_read' ../char_dev/chardev.c:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'device_write' ../char_dev/chardev.c:36: error: variable 'fops' has initializer but incomplete type ../char_dev/chardev.c:37: error: unknown field 'read' specified in initializer ../char_dev/chardev.c:37: error: 'device_read' undeclared here (not in a function) ../char_dev/chardev.c:37: warning: excess elements in struct initializer ../char_dev/chardev.c:37: warning: (near initialization for 'fops') ../char_dev/chardev.c:38: error: unknown field 'write' specified in initializer ../char_dev/chardev.c:38: error: 'device_write' undeclared here (not in a function) ../char_dev/chardev.c:38: warning: excess elements in struct initializer ../char_dev/chardev.c:38: warning: (near initialization for 'fops') ../char_dev/chardev.c:39: error: unknown field 'open' specified in initializer ../char_dev/chardev.c:39: warning: excess elements in struct initializer ../char_dev/chardev.c:39: warning: (near initialization for 'fops') ../char_dev/chardev.c:40: error: unknown field 'release' specified in initializer ../char_dev/chardev.c:41: warning: excess elements in struct initializer ../char_dev/chardev.c:41: warning: (near initialization for 'fops') ../char_dev/chardev.c: In function 'init_module': ../char_dev/chardev.c:49: warning: implicit declaration of function 'register_chrdev' ../char_dev/chardev.c:52: warning: implicit declaration of function 'printk' ../char_dev/chardev.c: In function 'cleanup_module': ../char_dev/chardev.c:74: warning: implicit declaration of function 'unregister_chrdev' ../char_dev/chardev.c: At top level: ../char_dev/chardev.c:87: warning: 'struct file' declared inside parameter list ../char_dev/chardev.c:87: warning: 'struct inode' declared inside parameter list ../char_dev/chardev.c:87: error: conflicting types for 'device_open' ../char_dev/chardev.c:16: error: previous declaration of 'device_open' was here ../char_dev/chardev.c: In function 'device_open': ../char_dev/chardev.c:91: error: 'EBUSY' undeclared (first use in this function) ../char_dev/chardev.c:91: error: (Each undeclared identifier is reported only once ../char_dev/chardev.c:91: error: for each function it appears in.) ../char_dev/chardev.c:93: warning: implicit declaration of function 'sprintf' ../char_dev/chardev.c:93: warning: incompatible implicit declaration of built-in function 'sprintf' ../char_dev/chardev.c:95: warning: implicit declaration of function 'try_module_get' ../char_dev/chardev.c:95: error: 'THIS_MODULE' undeclared (first use in this function) ../char_dev/chardev.c:87: warning: unused parameter 'inode' ../char_dev/chardev.c:87: warning: unused parameter 'file' ../char_dev/chardev.c: At top level: ../char_dev/chardev.c:103: warning: 'struct file' declared inside parameter list ../char_dev/chardev.c:103: warning: 'struct inode' declared inside parameter list ../char_dev/chardev.c:103: error: conflicting types for 'device_release' ../char_dev/chardev.c:17: error: previous declaration of 'device_release' was here ../char_dev/chardev.c: In function 'device_release': ../char_dev/chardev.c:111: warning: implicit declaration of function 'module_put' ../char_dev/chardev.c:111: error: 'THIS_MODULE' undeclared (first use in this function) ../char_dev/chardev.c:103: warning: unused parameter 'inode' ../char_dev/chardev.c:103: warning: unused parameter 'file' ../char_dev/chardev.c: At top level: ../char_dev/chardev.c:119: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'device_read' ../char_dev/chardev.c:164: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'device_write' make: *** [chardev.o] Error 1 make: Leaving directory `/opt/QtSDK/Project/char_dev-build-desktop-Desktop_Qt_4_8_0_for_GCC__Qt_SDK_______' 15:43:10: Процесс «/usr/bin/make» завершился с кодом 2. Возникла ошибка при сборке проекта char_dev (цель: Desktop) Во время выполнения сборки на этапе «Сборка» Как настроить работу в QT4? Сообщение отредактировал ViGOur - 28.3.2012, 15:20
Причина редактирования: Учимся использовать тэг CODE, expand можно попробовать на следующем уроке. ;)
|
|
|
Iron Bug |
![]()
Сообщение
#16
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
конечно, вряд ли кто-то собирает модули ядра таким экзотическим образом и я с Qt вообще дел не имею, но как вариант: модуль ядра нужно собирать той же версией компилятора, которая использовалась для сборки самого ядра. не знаю, как это указать Qt Creator'у. можно просто линк g++ подменить.
а так, всё равно есть ощущение, что он тупо не находит нужные ему файлы, о чём сразу и сообщает. проверить, что юзер имеет доступ к каталогу сборки модулей. проверить, что линки build и sources в каталоге сборки указывают на место, где лежит сорц ядра (или хотя бы хэдеры). ещё возможно, Creator'у нужно как-то принудительно указать рабочий каталог. по ходу, он пытаетcя собрать модуль прямо там, где он лежит. в этом случае ничего не соберётся, естественно. но про настройки Qt Creator'а я ничего не знаю, увы. Сообщение отредактировал Iron Bug - 28.3.2012, 21:39 |
|
|
Zaca |
![]()
Сообщение
#17
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 22.3.2012 Пользователь №: 3281 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо за помощь.
Наверно действительно надо делать так, как советуют: в редакторе текст, компиляция Makefile. Это, наверно, винда развратила - неистребимое желание иметь все в одном флаконе...) |
|
|
Iron Bug |
![]()
Сообщение
#18
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Наверно действительно надо делать так, как советуют: в редакторе текст, компиляция Makefile. Это, наверно, винда развратила - неистребимое желание иметь все в одном флаконе...) да как-то и под вендой драйвера из makefile'ов собираются. по крайней мере, мне не приходило в голову их собирать как-то иначе. возможно, что у студии сейчас есть какие-то приблуды для KMDF, но раньше ничего подобного точно не было и я как-то по привычке пишу файлы сборки для дров, что в венде, что в лине. при сборке через makefile исключается возможность влияния лишних параметров типа переменных среды конкретной оболочки, всяких там хитрых путей поиска и т.п. а писать сам код можно где угодно, это кому как больше нравится. |
|
|
kuzulis |
![]()
Сообщение
#19
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 393 Регистрация: 29.6.2009 Пользователь №: 862 Спасибо сказали: 36 раз(а) Репутация: ![]() ![]() ![]() |
Я все планирую создать плагин для QtCreator для сборки драйверов и всяких модулей ядра.
Но пока все как-то нет времени. Если есть желание помочь - то ссылка на проект тут https://gitorious.org/qt-creator-drivers-bu...-manager-plugin |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 19.6.2025, 14:31 |