LINUX.ORG.RU

Туплю с заголовками при компиляции драйвера


0

0

Драйвер на AnyData adu-520a/
вложенный бинарник работает на пентиумах, а на 2 проверенных АМД вешает систему. Решили перекомпилить на родной архитектуре.
Выдает по умолчанию
<usb.h> - No such file.
Тогда ставим хеадеры, прописываем линк /usr/src/linux на /usr/src/linux-headers-2.6.28.11/include/linux
В makefile к gcc прибавляем -I/usr/src/linux

Теперь оно нам говорит:
/usr/src/linux/stddef.h:4:28 error: linux/compiler.h: No such file or directory
Лезем в stddef.h и он собака ссылается на <linux\compiler.h>, хотя
compiler.h лежит с ним рядушком в его же каталоге.

Этот stddef лежит в /usr/src/linux, и требует в этой папке еще один вложенный каталог linux?

Я сильно подозреваю, что это все не так делается :)
____________________________
Kubunta 9.04

> Этот stddef лежит в /usr/src/linux, и требует в этой папке еще один вложенный каталог linux? Я сильно подозреваю, что это все не так делается :)

Я бы вместо вложенного каталога сделал симлинк на каталог :-)

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

Симлинк сам на себя? Какого овоща на букву х! Это же заголовки дистра!

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

А смысл? Есть два стандартных файла заголовков, которые лежат в одном каталоге. Но вот в одном файле другой описан как лежащий в другом каталоге... Вот в чем туплю... или не я... скорее я... :)

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

смысл в том, что в дереве хедеров инклуды отсчитываются от директории
.../include , а не от .../include/linux
где ты видел, чтобы в каком-нибудь проекте инклудилась /usr/include/linux ???

>Тогда ставим хеадеры, прописываем линк /usr/src/linux на /usr/src/linux-headers-2.6.28.11/include/linux

если хочешь сделать симлинк, делай так:
/usr/src/linux -> /usr/src/linux-headers-2.6.28.11
и тогда:

>В makefile к gcc прибавляем -I/usr/src/linux

-I/usr/src/linux/include

но лучше не занимайся ерундой (мягко говоря), и сделай так, как я сказал выше

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

в любом проекте в качестве путя к инклудам прописывается путь к корневой директории дерева инклудов:
/usr/include
/usr/local/include
/usr/src/linux-headers-2.6.28.11/include

у тебя с твоими симлинками (являющимися в принципе излишеством) всё выходит через одно место.

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

>смысл в том, что в дереве хедеров инклуды отсчитываются от директории .../include , а не от .../include/linux

т.е. если хедеру .../include/1/1.h понадобится хедер .../include/2/2.h он укажет относительный от папки .../include путь, считая, что программист не будет инклудить кучу директорий .../include/1 .../include/2 .../include/3 и т.д., а укажет только .../include

xydo ★★
()

> linux\compiler.h

что, вот прям-таки с вендовым слэшем?

Почитай LDD3. С современным kbuild все эти линки не нужны.

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

ну-ну... поставили libusb*dev ... и все откомпилилось. Сейчас будем думать заработало или нет.

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