«#include <asm / io.h>» вызывает «ошибку: asm / io.h: нет такого файла или каталога» - PullRequest
7 голосов
/ 23 декабря 2009

Я использую gentoo и пытаюсь скомпилировать программу для управления битами на параллельном порту. У этого есть линия около вершины этого:

#include <asm/io.h>

И когда я пытаюсь использовать на нем gcc, он выдает следующее:

port.c: 4: 20: ошибка: asm / io.h: нет такого файла или каталога

"locate asm / io.h" выдает (между прочим):

/ USR / SRC / Linux-2.6.32-папуасских / арка / x86 / включать / ASM / io.h

Итак, у меня есть файл заголовка, но он не находит его? Почему это не работает?

Ответы [ 5 ]

10 голосов
/ 23 декабря 2009

Я не уверен, являетесь ли вы автором программы или просто пытаетесь скомпилировать программу, полученную от кого-то, но выглядит так: #include <asm/io.h> следует заменить на #include <sys/io.h>. См. Результаты этого поиска в Google для получения дополнительной информации.

4 голосов
/ 11 ноября 2010

Никогда используйте код / ​​заголовки в /usr/include/asm. Вместо этого используйте заголовки в /usr/include/sys.

То, что вы делаете с помощью /usr/include/asm/, - это сборка вашего кода для конкретной ревизии заголовков ядра. Это может привести к поломке при изменении заголовков ядра. Связываясь с другим местоположением, вы будете ссылаться на более стабильную форму заголовков в glibc, которая будет ссылаться на заголовки ядра по мере необходимости. Вот почему в заголовках есть большой комплекс из #ifdef ... #endif строк.

Поверьте мне, все инструменты, которые вам нужны для работы с параллельными портами, будут в /usr/include/sys/io.h, так как, вероятно, все, что вы собираетесь использовать, это прямые readb() и writeb() вызовы соответствующих /dev/lpX устройство.

0 голосов
/ 23 декабря 2009

1001 * попробовать *

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include xyx

где xyz - файл, который вы пытаетесь скомпилировать.

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

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include -I/usr/src/some/Dir xyx
0 голосов
/ 23 декабря 2009

Добавьте -I / usr / src / linux-2.6.32-gentoo / arch / x86 / include в командную строку компиляции.

0 голосов
/ 23 декабря 2009

Возможно, вам потребуется добавить путь. В командной строке gcc:

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...