Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: где смотреть хелп АПИ линукса?  (Прочитано 15827 раз)
0 Пользователей и 1 Гость смотрят эту тему.
konst
Гость
« : 28-05-2004 11:06 » 

ну, на манер хелпа по ВинАПИ, который идёт со студией или билдером.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 28-05-2004 11:25 » 

У линуха нет своего api в понимании WinAPI.  Есть набор системных вызовов ядра, есть системные библиотеки.  Внутри ядра какая-то своя архитектура.

Тебе что надо?  Если API прикладного уровня, то для многих функций на линухе есть man

man socket
man select
etc

Для графики в X сервере есть фигова туча спецификаций, которые обычно поставляются вместе с библиотеками.  Можно взять с XFree.org

Большой набор документации по API различных библиотек подготовлен проектом LinuxBase.  Последняя версия 2.0, но её пока доделывают, в открытом доступе лежит версия 1.3

http://www.linuxbase.org/spec/refspecs/LSB_1.3.0/gLSB/gLSB.html
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 28-05-2004 11:44 » 

Цитата
man socket
man select
etc
Удобнее и полнее - info libc или pinfo libc

Согласен с npak - лучше конкретику спрашивать.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
konst
Гость
« Ответ #3 : 28-05-2004 12:13 » 

мне бы описание системных вызвов яда и где бы инфу ещё взять, как драйверы собирать. вот на книжку линк давали:
http://www.xml.com/ldd/chapter/book/
к ней примеры скачал, а они у меня на 2.4.20-8 (radhat9) ниразу не собираются Жаль
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 28-05-2004 12:16 » 

Цитата
к ней примеры скачал, а они у меня на 2.4.20-8 (radhat9) ниразу не собираются
Приведи ошибки. Они именно на 2.4.х расчитаны, или на более ранние ядра?
И укажи какой именно пример не идет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
konst
Гость
« Ответ #5 : 28-05-2004 12:35 » 

собственно не собираются все, как я поинмаю, но не пробовал...
в самой книге идёт речь о ядрах 2.2 - 2.4

вот ошибки к примеру (в консоли в каталоге scull просто make пускаю):
In file included from main.c:28:
/usr/include/linux/malloc.h:3:2: warning: #warning The Use of linux/malloc.h is deprecated, use linux/slab.h
In file included from /usr/include/linux/fs.h:23,
                 from main.c:29:
/usr/include/linux/string.h:8:2: warning: #warning Using kernel header in userland!
In file included from main.c:32:
/usr/include/linux/proc_fs.h:70: parse error before "atomic_t"
/usr/include/linux/proc_fs.h:73: parse error before '}' token
/usr/include/linux/proc_fs.h:203: parse error before "void"
и ещё дофига, но всё больше ворнинги
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 28-05-2004 12:47 » 

konst, вероятно ты не определил константу __KERNEL__.
Сделай это в своем примере (в каждом модуле .c или в общем заголовке), или в параметрах gcc.
Я использую gcc -D__KERNEL__ -DMODULE -DLINUX

Предупреждение из linux/malloc.h не страшно. Это говорит только, что заголовок linux/malloc.h устарел и следует исользовать linux/slab.h
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
konst
Гость
« Ответ #7 : 28-05-2004 13:17 » 

определено, конечно:
gcc -Wall -D__KERNEL__ -DMODULE -DLINUX -I/usr/src/linux/include -O2 -I..   -c -o main.o main.c
ну, там ворнингов строк на...строк на... 100
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 28-05-2004 13:27 » 

Сдается мне, что примеры были написаны для 2.2.х (для раннего издания книги) и не адаптированы к 2.4.х .
Временная трудность в том, что у меня не RH9.0 и ядро другое - номера строк в твоих ошибках не совпадают с моими исходниками. Сейчас уже некогда - позжее скачаю и посмотрю.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 28-05-2004 13:33 » 

/usr/include/linux/proc_fs.h:70: parse error before "atomic_t"

Значит, компилятор не нашёл тип atomic_t.  Если погрепать заголовки линуха, то окажется, что этот тип определён в заголовке

<kernel_root>/include/asm/atomic.h

Точно такой же заголовок есть в /usr/include/asm/

Почему он не цепляется при компиляции -- надо смотреть исходники.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 28-05-2004 13:53 » 

npak, молодец, навел на мысль, старую как мир: если установлены исходники ядра, а не только заголовки, в /usr/include имена asm и linux должны быть не папками, а ссылками на /usr/src/linux/include/asm и /usr/src/linux/include/linux . Т.е., если поставить другое ядро, то при сборке подключаются старые заголовки. konst, проверь этот момент.
Цитата
/usr/include/linux/string.h:8:2: warning: #warning Using kernel header in userland!

Скачал именно kernel-source-2.4.20-8.rpm. Ни в одном заголовке нет строки "Using kernel header in userland!". Может у тебя, все таки, другая версия?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 28-05-2004 14:03 » new

файл /usr/include/linux/string.h не из исходников ядра, а из пакета glibc-kernelheaders

У нас на сервере команда
bash$ rpm -qf /usr/include/linux/string.h
выдаёт glibc-kernheaders-2.4-7.14

Меня смущает вот что -- konst, указазал в команде запуска опцию
 -I/usr/src/linux/include
Если бы в указанном каталоге действительно стояли заголовки ядра, то <linux/string.h> должен был включиться из /usr/src/linux/include/linux/string.h

Я подозреваю, что заголовки ядра стоят в другом каталоге, например
/usr/src/linux-2.4/include (как это происходит в RH 9, kernel-source-2.4.18-3)
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines