그래서 나는 최소한의 OS로 많은 것을하지 않습니다. 32 비트 보호 모드에서 기본 C 커널을로드하는 부트 로더가 있습니다. printf
과 같은 것을 사용할 수 있도록 C 라이브러리에 어떻게 포팅합니까? GNU C 라이브러리를 사용하려고합니다. 어디서나 튜토리얼이 있습니까?최소한의 취미 OS를위한 GNU C 라이브러리
답변
좋아요, C 라이브러리에서 이식하는 것은 그리 어렵지 않습니다. 커널에서 Newlib을 사용하고 있습니다. 다음은 시작하는 자습서입니다. http://wiki.osdev.org/Porting_Newlib.
- 가에 (등 포크, fstat를, 같은) 시스템 기능의 목록에 대한 스텁 구현을 제공하여 크로스 컴파일러
- 를 사용하여 (예를 NEWLIB에 대한) 라이브러리를 컴파일
당신은 기본적으로 필요 커널
- 링크 라이브러리와 함께 커널은
당신이 malloc에 나 printf와 같은 함수를 (이 내부적으로 malloc을 사용) 사용하려면, 당신은 메모리 manag을 어떤 종류의 필요 sbrk의 간단한 구현.
+1. 나는 그것을 EFI에서 즉시 가동 시켰습니다. 꽤 굉장합니다. –
고맙습니다. 분명히 당신은 실제로 여기에 간단한 대답을 줄 수있는 사람들 중 하나입니다. 다른 사람들은 프로그래밍에 얼마나 나쁜지에 대해 논쟁하고 있습니다. – user2151887
uClibc과 같은 작은 libc를 사용하는 것이 좋습니다. GNU C 라이브러리는 거대한입니다. 주석에서 알 수 있듯이 첫 번째 단계는 C 컴파일러를 사용하는 것입니다.
무엇을하려하십니까? 전체 운영체제를 구축하는 것은 몇 년 동안 지속되는 사람들의 그룹을위한 작업입니다. 이미 작동하는 것으로 시작하여 가장 관심있는 부분을 해킹하는 것이 좋습니다.
블록의 또 다른 새로운 어린이는 구체적으로 포함 된 공간의 상황을 개선하는 것을 목표로하는 musl입니다.
그래도 아직 진행 중이므로 초보자에게는 최선의 선택이 아닐 수 있습니다.
- 1. gnu gcc 사이트의 표준 C++ 라이브러리 헤더
- 2. 최소한의 의존성을 지닌 크로스 플랫폼 C/C++ RabbitMQ 라이브러리
- 3. GNU 과학 라이브러리 구현?
- 4. C 라이브러리 (GNU)에 대한 C++ exe 연결 문제가 있습니다.
- 5. Microsoft vs. GNU C/C++ 표준 라이브러리 구현
- 6. 여러 OS를위한 BlackBerry 코드 서명
- 7. GNU MP "많은 수의"라이브러리
- 8. 최소한의 C/C++ 프로그램이 segfaults입니까?
- 9. 최소한의 sdk가 필요한 제 3 자 라이브러리
- 10. Windows에서 Gnu C 라이브러리에 액세스
- 11. Cygwin에서 Gnu 과학 라이브러리 가져 오기
- 12. 라이브러리 함수 (C)가 GNU 어셈블리 언어에서 어떻게 호출합니까?
- 13. C++ 및 GNU 과학 라이브러리 코드의 메모리 누출 제거하기
- 14. GSL - GNU 과학 라이브러리 : 딥 복사를 피하십시오
- 15. GNU 어셈블러 : 손상된 공유 라이브러리 오류에 액세스
- 16. 은 가장 최소한의 C++ 프로그램
- 17. GNU C++ 오류 메시지
- 18. C++ GNU 링커 오류
- 19. __attribute__ in GNU C
- 20. 정의를 확인하십시오 GNU C
- 21. GNU 메이크, C 프로그래밍
- 22. 대부분의 취미 생활을하는 사람들을위한 알고리즘
- 23. g ++은 GNU C++ - 컴파일러와 최소한의 코드 크기를위한 -Os 최적화 옵션으로 몇 가지 실험을하고있는 순간에 -O3
- 24. 리눅스 GNU 빌드 : 정적 라이브러리 세트에서 동적 라이브러리 빌드
- 25. GNU 라이브러리 - _POSIX_OPEN_MAX 심볼을 갖는 라이브러리는 무엇입니까?
- 26. GNU Make : 교체로 라이브러리 회원 보관
- 27. C# 대수 선형 라이브러리
- 28. bcp (Boost)가 최소한의 하위 집합 라이브러리 종속성을 복사합니다.
- 29. 작은 개별 프로젝트 (예 : 취미 프로그래밍) 용 C++
- 30. 최소한의 보석이어야합니까?
"커스텀"커널은 얼마입니까? – Ryan
먼저 C 컴파일러를 이식해야합니다.이 컴파일러는 어렵습니다 (GCC가 아닌 경우 GCC 일 경우 그 이유입니다). 그런 다음 컴파일러가 glibc의 소스 코드를 먹게해야합니다.이 코드는 더 어렵습니다. –
@ H2CO3 +1 왜냐하면 GCC가 아니기 때문입니다. GCC라면 그 이유는 무엇입니까? – mah