я составил (без предупреждения) hello-5.c
примера из «The Linux Kernel Module Programming Guide», и когда я попытался insmod, я получил следующее сообщение об ошибке:Есть ли способ получить Splint или аналогичную статическую проверку для работы с модулями ядра Linux?
insmod: error inserting 'hello-5.ko': -1 Unknown symbol in module
Я думал, что я хотел бы попробовать щепу, чтобы увидеть, если он пришел с каким-либо очевидные ошибки, но когда я запустил его, я получил убивание предупреждения от заголовков ядра, пока он не barfed пытается разобрать asm/types.h
[email protected]:~/kernel-source/lkmpg$ splint -I/lib/modules/$(uname -r)/build/include hello-5.c
Splint 3.1.1 --- 03 Nov 2006
(... lots of warnings ...)
/lib/modules/2.6.24-24-insp8600/build/include/asm/types.h:13:24: Parse Error:
Suspect missing struct or union keyword: __signed__ :
unsigned short int. (For help on parse errors, see splint -help
parseerrors.)
*** Cannot continue.
Так на самом деле есть два вопроса:
- Как исправить ошибку insmod?
- Как получить шину для игры с заголовками ядра?
Ядро и шина поставляются вместе как часть Ubuntu 8.04, поэтому они, вероятно, должны быть «правы» друг для друга, я думаю. –
Взгляните на ссылку, которую я только что нашел, используя шину на модулях ядра. http://www.cs.virginia.edu/pipermail/splint-discuss/2005-January/000531.html –
@ Robert S. Barnes, да, эта ссылка иллюстрирует то, о чем я говорю: отсутствие поддержки диалекта CCC GCC , Возможно, это решение, которое вы искали. –