"#include "причины" Ошибка: asm / io.ч: нет такого файла или каталога"

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

#include <asm/io.h>

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

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

" найдите asm / io.h " yeilds (среди прочего):

в/usr/src/и в Linux-2.6.32-Gentoo в/арки/х86/включить/АСМ/Ио.h

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

5 ответов


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


никогда используйте код / заголовки в /usr/include/asm. Используйте заголовки в /usr/include/sys вместо.

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

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


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

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

попробовать

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

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

это указывает компилятору, где искать файлы include. У вас может быть много вариантов I, Если ваши файлы include находятся в разных местах, например

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

добавить -я в/usr/src/и в Linux-2.6.32-Gentoo в/арки/х86/включать в свои компиляции из командной строки.