2011-01-10 3 views
0

Я использую Ubuntu 10,10 - 2.6.35.23-родовоемодуль ядра Linux Compile (lincan)

Я хочу, чтобы скомпилировать lincan-модуль (http://sourceforge.net/projects/ocera/), но это Безразлично Я работаю так, как хочу ... Это моя первая компиляция модуля ядра. Я сделал это:

Сначала распаковали lincan-sources в мой домашний каталог. Тогда та или иная строчка "делать" с этим выходом:

make -C /home/x/can/lincan-0.3.4/src SOURCES_DIR=/home/x/can/lincan-0.3.4/src default ; make -C /home/x/can/lincan-0.3.4/utils SOURCES_DIR=/home/x/can/lincan-0.3.4/utils default ; 
awk: cannot open /lib/modules/2.6.35-23-generic/build/include/linux/autoconf.h (No such file or directory) 
awk: cannot open /lib/modules/2.6.35-23-generic/build/include/linux/autoconf.h (No such file or directory) 
grep: /lib/modules/2.6.35-23-generic/build/include/linux/utsrelease.h: No such file or directory 
make[1]: Betrete Verzeichnis '/home/x/can/lincan-0.3.4/src' 
Makefile:216: /lib/modules/2.6.35-23-generic/build/Rules.make: No such file or directory 
make[1]: *** Keine Regel, um »/lib/modules/2.6.35-23-generic/build/Rules.make« zu erstellen. Schluss. 
make[1]: Verlasse Verzeichnis '/home/x/can/lincan-0.3.4/src' 
make[1]: Betrete Verzeichnis '/home/x/can/lincan-0.3.4/utils' 
cc -I../include -O2 -Wall -c -o rxtx.o rxtx.c 
rxtx.c: In function ‘main’: 
rxtx.c:49: warning: format not a string literal and no format arguments 
rxtx.c:73: warning: format not a string literal and no format arguments 
rxtx.c:51: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result 
rxtx.c:58: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
rxtx.c:62: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
rxtx.c:67: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
rxtx.c:75: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result 
rxtx.c:81: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
cc rxtx.o -o rxtx 
cc -I../include -O2 -Wall -c -o sendburst.o sendburst.c 
cc sendburst.o -o sendburst 
cc -I../include -O2 -Wall -c -o readburst.o readburst.c 
cc readburst.o -o readburst 
cc -I../include -O2 -Wall -c -o send.o send.c 
send.c: In function ‘main’: 
send.c:25: warning: format not a string literal and no format arguments 
send.c:27: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result 
send.c:33: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
send.c:35: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
send.c:40: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result 
cc send.o -o send 
cc -I../include -O2 -Wall can-proxy.c -o can-proxy 
make[1]: Verlasse Verzeichnis '/home/x/can/lincan-0.3.4/utils' 

Тогда я типа "сделать установку":

make -C /home/x/can/lincan-0.3.4/src SOURCES_DIR=/home/x/can/lincan-0.3.4/src install ; make -C /home/x/can/lincan-0.3.4/utils SOURCES_DIR=/home/x/can/lincan-0.3.4/utils install ; 
awk: cannot open /lib/modules/2.6.35-23-generic/build/include/linux/autoconf.h (No such file or directory) 
awk: cannot open /lib/modules/2.6.35-23-generic/build/include/linux/autoconf.h (No such file or directory) 
grep: /lib/modules/2.6.35-23-generic/build/include/linux/utsrelease.h: No such file or directory 
make[1]: Betrete Verzeichnis '/home/x/can/lincan-0.3.4/src' 
Makefile:216: /lib/modules/2.6.35-23-generic/build/Rules.make: No such file or directory 
make[1]: *** Keine Regel, um »/lib/modules/2.6.35-23-generic/build/Rules.make« zu erstellen. Schluss. 
make[1]: Verlasse Verzeichnis '/home/x/can/lincan-0.3.4/src' 
make[1]: Betrete Verzeichnis '/home/x/can/lincan-0.3.4/utils' 
echo Nothing to install 
Nothing to install 
make[1]: Verlasse Verzeichnis '/home/x/can/lincan-0.3.4/utils' 

И это не случилось ничего. Я не вижу ядра. Что я не так? Почему нет autoconf.h и других файлов? У вас есть какие-то намеки на меня? Благодаря!


Теперь я создал hardlinks для отсутствующих файлов (autoconf.h и utsrelease.h). Они находятся в /usr/src/linux-headers-2.6.35.23-generic/include/generated/

Теперь он скомпилируется и многое другое. Это первая ошибка, которая появляется:

In file included from /home/x/can/lincan-0.3.4/src/../include/main.h:38, 
       from /home/x/can/lincan-0.3.4/src/proc.c:37: 
/home/x/can/lincan-0.3.4/src/../include/./can_queue.h: In function ‘canque_edge_decref’: 
/home/x/can/lincan-0.3.4/src/../include/./can_queue.h:652: error: invalid initializer 
/home/x/can/lincan-0.3.4/src/../include/./can_queue.h:652: error: invalid initializer 
/home/x/can/lincan-0.3.4/src/../include/./can_queue.h:652: error: incompatible types when assigning to type ‘int’ from type ‘atomic_t’ 
make[3]: *** [/home/x/can/lincan-0.3.4/src/proc.o] Fehler 1 
make[2]: *** [_module_/home/x/can/lincan-0.3.4/src] Fehler 2 
make[2]: Verlasse Verzeichnis '/usr/src/linux-headers-2.6.35-23-generic' 
make[1]: *** [make_this_module] Fehler 2 
+0

Возможно, у вас на сайте ubuntu более удачная публикация удачи? – R0MANARMY

ответ

1

Теперь я создал для жестких ссылок отсутствующих файлов (autoconf.h и utsrelease.h).

Вы должны установить пакет, который содержит среду сборки, как создается, когда ядро ​​вы работаете было построено. Источник, как правило, бессмыслен (что вам нужно, например, 8139too.c, когда вы собираетесь строить внешний модуль), за исключением заголовков ядра. Я не могу сказать, где среда сборки находится в Debian или ее потомках, но в openSUSE будет пакет «kernel-default-devel», например, чтобы содержать utsrelease.h и autoconf.h, а также - через зависимости - статический заголовок файлов. Таким образом, найдите уже существующий пакет deb, который содержит это.

+0

В Ubuntu это linux-headers- * package: https://packages.ubuntu.com/search?suite=all&searchon=names&keywords=linux-header или просто 'sudo apt-get install linux-headers-generic' – osgx

-1

Пожалуйста, установите необходимые предварительные условия для сборки ядра here. Это установит необходимые инструменты для сборки/компиляции модулей ядра.

+0

Это не полностью корректно, у ubuntu есть все файлы, необходимые для сборки модуля ядра в linux-header- * packages: https://packages.ubuntu.com/search?suite=all&searchon=names&keywords=linux-header; и KernelBuild связаны с https://kernelnewbies.org/KernelBuild для создания нового ядра. – osgx

Смежные вопросы