LINUX.ORG.RU

Проблема с модулем


0

0

Есть небольшой модуль. Компилиться без проблем на RH 7.1 и SuSE 9.0 Там используется ioremap_nocache(). Так скомпиленный на RH модуль работает на ура, а на SuSE - говорит, что не может сделать ioremap (возвращает NULL). Код модуля и на RH и на SuSE одинаковый. Деревья ядра и настройки - одинаковые. В чем может быть проблема?

anonymous

Может баг в gcc (SuSe) ?

-

anonymous
()

Извините, пожалуйста, за сообщение не по теме, но из-за какого-то глюка форума я уже пару месяцев не могу создавать свои темы - только отвечать в уже созданные. Поэтому приходится пользоваться чужими темами, для разрешения собственных проблем... и вот, вознила проблема с компиляцией модулей, и я имею наглость изложить её здесь:

Суть проблемы в следующем. Есть дистр АСП 9.2.Поставил исходник, что шёл вместе с дистром (2.4.22-1.2154-nptl.asp) - привычно делаю make menuconfig - вылетает с ошибками: ncurses не найден, в скрипте таком-то syntax error в строке такой-то и такой-то, и ещё в куче строк. Ncurses, конечно же, установлен. Думаю, хрен с ним - кидаю в директорий с исходником .config от предыдущего ядра - всё собирается, и, о чудо! - поднимается фреймбуфер, чего со старым ядром не наблюдалось, несмотря на все усилия.

Но радость была недолгой - вырубание света во время активных дисковых операций - следует переустановка с разбиением диска по разделам /,/boot,/opt,/tmp,/usr,/var,/home - дабы впредь всё не было бы так печально - и снова пересобираю ядро...

Снова пытаюсь сделать make menuconfig (думаю, мож в новом ядре появились какие новые полезные опции) - та же фигня: ncurses не найден и т.п. Снова кидаю старый .config - опаньки - ядро собирается, модули нет. Мистика - тот же исходник, тот же конфиг... Думаю, ладно, поскольку make config - это как-то уж очень долго и тоскливо - гружусь в иксы, чтоб воспользоваться конфигуратором ядра КДЕ (вот такое извращение ;)) - он говорит - parse error в исходниках, а именно в скрипте таком-то в такой-то строке. Лезу туда - исправляю, находит следующую, исправляю её - всё класс - конфигуратор видит конфиг, просматриваю его - вроде ничего революционно нового нет. Исключаю из конфига тот модуль, на котором компилятор вывалился с руганью, возвращаюсь в консоль, запускаю make dep && make bzImage && make modules - вываливается с ошибкой в другом модуле... и так несколько раз. Если включаю код не модулем, а резидентно, то все нормально, но, блин, мне хочется иметь маленькое ядрышко с модулями... а не одно огромное ядро без модулей.

Компилятор ругается одинаково на почти все модули - например:

make[1]: Вход в каталог `/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers'

make -C addon modules

make[2]: Вход в каталог `/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers/addon'

make -C cipe modules

make[3]: Вход в каталог `/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers/addon/cipe'

gcc -D__KERNEL__ -I/usr/src/linux-2.4.22-1.2154.nptl.asp/include

-Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing

-fno-common -fomit -frame-pointer -pipe -mpreferred-stack-boundary=2 -march=pentium3

-DMODULE -DMODVERSIONS -include

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/modversions.h -nost

dinc -iwithprefix include -DKBUILD_BASENAME=module -c -o module.o module.c

In file included from

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/if.h:23,

from cipe.h:21,

from module.c:15:

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:266:12:

invalid suffix "fb3dd30" on integer constant In file included from

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/if.h:23,

from cipe.h:21,

from module.c:15:

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:266: error: syntax error

before numeric constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:266: error:

`memcpy_from iovec_R_ver_str' declared as function returning a function

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:266:

warning: function declaration isn't a prototype

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:275:12: invalid suffix "ceb163c" on integer constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:275: error:

syntax error before numeric constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:275: error:

`memcpy_toiovec_R_ver_str' declared as function returning a function

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:275:

warning: function declaration isn't a prototype

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:276:

error: `memcpy_tokerneliovec_R_ver_str' declared as function returning a function

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:276:

warning: parameter names (without types) in function declaration

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:277:12: invalid suffix "c99093" on integer constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:277:

error: syntax error before numeric constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:277:

error: `move_addr_to_user_R_ver_str' declared as function returning a function

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:277: warning: function declaration isn't a prototype

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:278:12: invalid suffix "dfa4696" on integer constant

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/socket.h:278:

error: syntax error before numeric constant

In file included from cipe.h:62,

from module.c:15:

/usr/src/linux-2.4.22-1.2154.nptl.asp/include/linux/netdevice.h:149:20: invalid suffix "cf0c64f" on integer constant

<skiped>

И так далее, до

make[3]: *** [module.o] Ошибка 1

make[3]: Выход из каталог

`/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers/addon/cipe'

make[2]: *** [_modsubdir_cipe] Ошибка 2

make[2]: Выход из каталог

`/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers/addon'

make[1]: *** [_modsubdir_addon] Ошибка 2

make[1]: Выход из каталог

`/usr/src/linux-2.4.22-1.2154.nptl.asp/drivers'

make: *** [_mod_drivers] Ошибка 2

Подозреваю, что это может быть связано с флагами компиляции -Wall -Wstrict-prototypes -Wno-trigraphs - но, билять, первый раз же всё собиралось с тем же самым конфигом!

У меня уже в голове полный ступор - не знаю, что делать... какие будут предложения?

З.Ы. К тому же, имеется диск с обновлениями, и на нём обновлённый исходник, но опять засада - rpm с исходником не устанавливается - говорит, битый rpm, подпись md5 не совпадает, вот такое западло...

bsh ★★★
()
Ответ на: комментарий от bsh

ncurses-devel поставь, будет тебе make menuconfig ;)

кстати за упоминание "the emperor wears no clothes" спасибо, прочел - очень интересно ;)

morge ★★
()
Ответ на: комментарий от morge

>ncurses-devel поставь, будет тебе make menuconfig

Спасибо - вечерком попробую.

>кстати за упоминание "the emperor wears no clothes" спасибо, прочел - очень интересно

Пожалуйста ;) - рад, что понравилось.

bsh ★★★
()

ядро какое?

> SuSE - ioremap (возвращает NULL).

вполне возможно, и правильно возвращает. например, VMALLOC область исчерпана. машины разные? еще какие-то драйвера на второй? какой параметр size у ioremap_nocache()?

idle ★★★★★
()
Ответ на: комментарий от bsh

>>ncurses-devel поставь, будет тебе make menuconfig

Сработало. make menuconfig есть - модули по прежнему не компилятся - компилятор выдаёт ту-же ругань...

bsh ★★★
()
Ответ на: комментарий от morge

Всё решилось банально - перед make menuconfig сделал make mrproper - всё собралось (не думал, что есть необходимость очищать свежеустановленный исходник, оказалось, что иногда таки надо ;)).

bsh ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.