2010-05-04 2 views
3

Я хотел бы скомпилировать c-программу, разработанную для linux с помощью cc под os x. Он включает заголовок sys/io.h. При компиляции я получаю сообщение об ошибке, что этот файл не найден? Нет ли sys/io.h заголовочного файла под os x?osx sys/io.h не найдено

Любая помощь была бы действительно оценена!

Спасибо!

+0

Что вы пытаетесь скомпилировать? – WhirlWind

ответ

0
$ ls /usr/include/sys/io.h 
ls: /usr/include/sys/io.h: No such file or directory 

Это не похоже на это. Возможно, вам придется портировать.

У Linux есть этот файл заголовка. Похоже, что это связано с low level port input and output.

В общем, вещи в/usr/include/sys будут специфичными для операционной системы, поэтому вам придется переносить новую архитектуру, если она еще не была перенесена.

+0

Спасибо за ваш ответ! Программа использует функции, такие как outb(), для записи значений в определенные регистры. Есть ли эквивалентный заголовочный файл для os x, предоставляющий мне такие функции? – ioh

+0

Я узнал, что если я хочу использовать низкоуровневый io под osx, мне придется иметь модный модем. другими словами, мне нужно написать kext? – ioh

+0

Я бы предположил, что вам придется написать kext, хотя это зависит от конкретного устройства. OS X обеспечивает поддержку определенных устройств из пользовательского пространства. – WhirlWind

8

Включает в себя <sys/uio.h>.

или почему бы и нет?

#ifdef __APPLE__ 
     #include <sys/uio.h> 
#else 
     #include <sys/io.h> 
#endif 

В случае Apple OS (OSX/IOS) код будет знать компилировать с <sys/uio.h>

+1

Не может быть так прямо; разве эти файлы заголовков не объявляют разные функции и т. д.? – trojanfoe

+0

Это должно быть ** принято **. – gsamaras

0

Вы можете вручную добавить его в свой проект, и он должен собрать.

https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/master/sysroot/usr/include/sys/io.h

Edit: Вам нужно features.h а

https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/master/sysroot/usr/include/features.h

Наконец получил поддержку курсора в моем ядре, хотя функции в io.h не работали для меня. Они отлично составлены и могут помочь кому-то другому. Это код, который я буду делать с ...

static inline void outb(unsigned short port, unsigned char value) 
{ 
    __asm__ __volatile__ ("outb %1, %0" : : "dN" (port), "a" (value)); 

} 
static inline unsigned char inb(unsigned short port) 
{ 
    unsigned char value; 
    __asm__ __volatile__ ("inb %1, %0" : "=a"(value) : "Nd"(port)); 
    return value; 
} 

void update_cursor(int row, int col) 
{ 
    unsigned short position=(row*80) + col; 

    // cursor LOW port to vga INDEX register 
    outb(0x3D4, 0x0F); 
    outb(0x3D5, (unsigned char)(position&0xFF)); 
    // cursor HIGH port to vga INDEX register 
    outb(0x3D4, 0x0E); 
    outb(0x3D5, (unsigned char)((position>>8)&0xFF)); 
} 
+0

Итак, вы добавляете файл заголовка, и ... он волшебным образом работает, да? – trojanfoe

+0

Да, мне нужна функция outb(), и все компилируется. Попытка добавить поддержку курсора к небольшому ядру ... Я признаю, что у меня пока нет работы, но я новичок в этом. – scubasteve623

1

Что написано на биборе. Хотя мой файл выглядит примерно так и работает хорошо.

#ifdef __linux 

#include <io.h> 

#elseif __apple 

#include<uio.h>