OS X에서 cc를 사용하여 Linux 용으로 개발 된 C 프로그램을 컴파일하고 싶습니다. sys/io.h 헤더가 포함되어 있습니다. 컴파일 할 때이 파일을 찾을 수 없다는 오류가 표시됩니까? os x 아래에 sys/io.h 헤더 파일이 없습니까?osx sys/io.h 찾을 수 없습니다.
도움이 될 것입니다.
감사합니다.
OS X에서 cc를 사용하여 Linux 용으로 개발 된 C 프로그램을 컴파일하고 싶습니다. sys/io.h 헤더가 포함되어 있습니다. 컴파일 할 때이 파일을 찾을 수 없다는 오류가 표시됩니까? os x 아래에 sys/io.h 헤더 파일이 없습니까?osx sys/io.h 찾을 수 없습니다.
도움이 될 것입니다.
감사합니다.
$ 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의 것들은 운영 체제에 따라 다르기 때문에, 아직 포팅되지 않았다면 새로운 아키텍처로 포팅해야합니다.
컴파일 아는 것, 그것은 컴파일해야한다.
편집 : 당신은 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));
}
그래서 헤더 파일을 추가하면 ... 마술처럼 작동합니까? – trojanfoe
예, 필요한 함수는 outb()이고 모든 것이 컴파일됩니다. 작은 커널에 커서 지원을 추가하는 중 ... 아직 작동하지 않는다는 것을 인정하지만, 나는 이것에 대해 아주 새로운 것입니다. – scubasteve623
bibor 작성이 완벽합니다. 내 파일은 이런 모양으로 잘 작동하지만.
#ifdef __linux
#include <io.h>
#elseif __apple
#include<uio.h>
무엇을 컴파일 하시겠습니까? – WhirlWind