Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Почему не видны заголовочные файлы?  (Прочитано 6777 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
 Здравствуйте, друзья. Подскажите, пожалуйста, как мне побороть такую проблему.
 При попытке подключения к программе файлов:
 <linux/kernel.h>
 <linux/module.h>
 <linux/workqueue.h>
 <linux/sched.h>
 <asm/io.h>
 kernel и sched подключаются, а все остальные - ни в какую, g++ пишет "No such file or directory". Но при этом все эти пять файлов лежат в одной инклудовой папке практически рядом. Почему же одни компилятору видны, а остальные - нет? Заранее спасибо за ответ!

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #1 : 13 Декабря 2010, 16:42:08 »
Вывод команды ls в студию

$ ls -la /usr/include/linux/module.h
Что пишет?
У меня - что no such file or directory.

Видимо, компилятору ключа -I с путем не хватает.

$ ll /usr/src/linux-headers-2.6.32-26/include/linux/module.h
-rw-r--r-- 1 root root 19994 2010-11-24 11:59 /usr/src/linux-headers-2.6.32-26/include/linux/module.h

Кстати, не g++, а gcc.
« Последнее редактирование: 13 Декабря 2010, 16:44:21 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #2 : 13 Декабря 2010, 16:54:42 »
 Файлы эти лежат глубже:
/usr/src/linux-headers-2.6.31-22/include/linux/module.h
 А указанный вами код в консоли не выполняется - пишет, команда не найдена.

Пользователь решил продолжить мысль 13 Декабря 2010, 16:58:55:
Вообще команды ll нет.
« Последнее редактирование: 13 Декабря 2010, 16:58:55 от Vil84 »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #3 : 13 Декабря 2010, 17:07:26 »
Вообще команды ll нет.

Это алиас.  Раскрывается в ls -l

(Нажмите, чтобы показать/скрыть)
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #4 : 13 Декабря 2010, 17:12:29 »
 Да, теперь выдало ту же строчку, что и у вас, только с другими датами, но при включении #include <module.h> в программу - всё тот же глюк - "No such file or directory".

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #5 : 13 Декабря 2010, 17:19:05 »
Потому что препроцессор ищет файлы в /usr/include/linux
В вызове gcc должен быть ключ -I/usr/src/linux-headers-2.6.31-22/include/
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #6 : 13 Декабря 2010, 17:49:51 »
 Это, конечно, смешно и абсолютно нелогично, но и с подстановкой ключа с указанием директории файл не находится. Вот мой маленький Makefile, может быть, в нём проблема:

cpps = main.cpp fnm.cpp
objs = main.o fnm.o

rez: $(objs)
   gcc $(cpps) -I/usr/src/linux-headers-2.6.31-22/include/ -o rez -g -lpanel -lncurses

clean:
   rm -f $(objs) 
   rm -f rez



Пользователь решил продолжить мысль 13 Декабря 2010, 17:58:03:
Но с другой стороны, вы чертовски правы. Действительно, в /usr/src/include/ файл kernel.h имеется, а module.h - нет. В подставленной в качестве ключа директории есть и тот, и другой. Но ведь не работает, зараза!
« Последнее редактирование: 13 Декабря 2010, 17:58:03 от Vil84 »

Оффлайн smaharbA

  • Участник
  • *
  • Сообщений: 220
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #7 : 13 Декабря 2010, 20:42:46 »
первопричина в недоучках авторах
второпричина в еще больших недоумках мантейнерах
Я конечно далек от мысли...(с)

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #8 : 14 Декабря 2010, 09:30:15 »
Цитировать
первопричина в недоучках авторах
второпричина в еще больших недоумках мантейнерах
Ага, а самое большое зло - это умники, которые толком ничего подсказать не могут, но шибко любят пофлудить.

Пользователь решил продолжить мысль 14 Декабря 2010, 10:26:54:
Странно ещё, что при попытке без Make-файла заставить компилятор сделать вот так:
 gcc main.cpp -o rez -g -I/usr/src/linux-headers-2.6.31-22/include/
 в ответ получаю вот такое:

 /usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:874: error: ‘struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:874: error: ‘const struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘void cpumask_shift_left(cpumask*, const cpumask*, int)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:887: error: ‘struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:887: error: ‘const struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘void cpumask_copy(cpumask*, const cpumask*)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:899: error: ‘struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:899: error: ‘const struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘int cpumask_scnprintf(char*, int, const cpumask*)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:946: error: ‘const struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘int cpumask_parse_user(const char*, int, cpumask*)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:960: error: ‘struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘int cpulist_scnprintf(char*, int, const cpumask*)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:975: error: ‘const struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘int cpulist_parse(const char*, cpumask*)’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:989: error: ‘struct cpumask’ has no member named ‘bits’
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: In function ‘size_t cpumask_size()’:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1001: error: ‘BITS_TO_LONGS’ was not declared in this scope
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h: At global scope:
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1034: error: ‘gfp_t’ has not been declared
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1039: error: ‘gfp_t’ has not been declared
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1045: error: ‘gfp_t’ has not been declared
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1051: error: ‘gfp_t’ has not been declared
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1073: error: ISO C++ forbids declaration of ‘DECLARE_BITMAP’ with no type
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1073: error: ‘cpu_all_bits’ was not declared in this scope
/usr/src/linux-headers-2.6.31-19/include/linux/cpumask.h:1073: error: initializer expression list treated as compound expression
In file included from /usr/src/linux-headers-2.6.31-19/include/linux/topology.h:33,
                 from /usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:7,
                 from /usr/src/linux-headers-2.6.31-19/include/linux/kmod.h:22,
                 from /usr/src/linux-headers-2.6.31-19/include/linux/module.h:13,
                 from main.cpp:9:
/usr/src/linux-headers-2.6.31-19/include/linux/smp.h:20: error: ‘u16’ does not name a type
/usr/src/linux-headers-2.6.31-19/include/linux/smp.h:21: error: ‘u16’ does not name a type
In file included from /usr/src/linux-headers-2.6.31-19/include/linux/kmod.h:22,
                 from /usr/src/linux-headers-2.6.31-19/include/linux/module.h:13,
                 from main.cpp:9:
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:119: error: ‘allocflags_to_migratetype’ declared as an ‘inline’ variable
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:119: error: ‘gfp_t’ was not declared in this scope
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:120: error: expected ‘,’ or ‘;’ before ‘{’ token
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:214: error: ‘gfp_zone’ declared as an ‘inline’ variable
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:214: error: ‘gfp_t’ was not declared in this scope
/usr/src/linux-headers-2.6.31-19/include/linux/gfp.h:215: error: expected ‘,’ or ‘;’ before ‘{’ token

 на несколько страниц. Что это значит?
« Последнее редактирование: 14 Декабря 2010, 10:26:54 от Vil84 »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Vil84

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Re: Почему не видны заголовочные файлы?
« Ответ #10 : 14 Декабря 2010, 11:26:44 »
 Огромное спасибо, wl! Это самое то, что надо.

 

Страница сгенерирована за 0.016 секунд. Запросов: 21.