2013-03-22 3 views
2

그래서 나는 최소한의 OS로 많은 것을하지 않습니다. 32 비트 보호 모드에서 기본 C 커널을로드하는 부트 로더가 있습니다. printf과 같은 것을 사용할 수 있도록 C 라이브러리에 어떻게 포팅합니까? GNU C 라이브러리를 사용하려고합니다. 어디서나 튜토리얼이 있습니까?최소한의 취미 OS를위한 GNU C 라이브러리

+1

"커스텀"커널은 얼마입니까? – Ryan

+7

먼저 C 컴파일러를 이식해야합니다.이 컴파일러는 어렵습니다 (GCC가 아닌 경우 GCC 일 경우 그 이유입니다). 그런 다음 컴파일러가 glibc의 소스 코드를 먹게해야합니다.이 코드는 더 어렵습니다. –

+4

@ H2CO3 +1 왜냐하면 GCC가 아니기 때문입니다. GCC라면 그 이유는 무엇입니까? – mah

답변

6

좋아요, C 라이브러리에서 이식하는 것은 그리 어렵지 않습니다. 커널에서 Newlib을 사용하고 있습니다. 다음은 시작하는 자습서입니다. http://wiki.osdev.org/Porting_Newlib.

  • 가에 (등 포크, fstat를, 같은) 시스템 기능의 목록에 대한 스텁 구현을 제공하여 크로스 컴파일러
  • 를 사용하여 (예를 NEWLIB에 대한) 라이브러리를 컴파일

    당신은 기본적으로 필요 커널

  • 링크 라이브러리와 함께 커널은

당신이 malloc에 ​​나 printf와 같은 함수를 (이 내부적으로 malloc을 사용) 사용하려면, 당신은 메모리 manag을 어떤 종류의 필요 sbrk의 간단한 구현.

+1

+1. 나는 그것을 EFI에서 즉시 가동 시켰습니다. 꽤 굉장합니다. –

+0

고맙습니다. 분명히 당신은 실제로 여기에 간단한 대답을 줄 수있는 사람들 중 하나입니다. 다른 사람들은 프로그래밍에 얼마나 나쁜지에 대해 논쟁하고 있습니다. – user2151887

2

uClibc과 같은 작은 libc를 사용하는 것이 좋습니다. GNU C 라이브러리는 거대한입니다. 주석에서 알 수 있듯이 첫 번째 단계는 C 컴파일러를 사용하는 것입니다.

무엇을하려하십니까? 전체 운영체제를 구축하는 것은 몇 년 동안 지속되는 사람들의 그룹을위한 작업입니다. 이미 작동하는 것으로 시작하여 가장 관심있는 부분을 해킹하는 것이 좋습니다.

5

glibc를 강력히 권장합니다. 그것은 짐승입니다.

newlib을 대신 사용해보십시오. 새 커널에 이식하는 것은 쉽습니다. here과 같이 몇 가지 지원 기능 만 작성하면됩니다.

2

블록의 또 다른 새로운 어린이는 구체적으로 포함 된 공간의 상황을 개선하는 것을 목표로하는 musl입니다.

그래도 아직 진행 중이므로 초보자에게는 최선의 선택이 아닐 수 있습니다.

관련 문제