C언어를 작성하다보면 printf 함수가 있다.
이 함수의 가장 밑으로 내려가서 어떻게 구현되어있는지 궁금해졌다.
Ctrl + 클릭 으로 들어가면 studio.h 에 선언되어 있는 형태를 알 수 있다.
그렇게 들어가고나면 이런 추상자료형을 볼수 있는데 이 말은 즉 이러한 함수를 구현하는 .c 파일이 어딘가에 있다는 말이 될것이다. 찾아 들어가보자.
? : ㄴㄴ 안됨 돌아가셈.
Q. 왜요?
A. printf 함수는 C 표준 라이브러리에 정의된 함수임.
이는 컴파일러와 운영체제에 따라 구현 방식이 다를 수 있으며, 일반적으로 소스 코드가 공개되지 않는다.
그렇다 나는 내부 구현 사정을 알 수 없고 모르는채로 살아가야만 한다.
"바퀴를 재발명하지마라"
ㅎㅏ지만 바퀴를 재발명하고싶은걸요.
방법 1. 디버깅모드로 함수 내부에 진입하여 어셈블리 수준의 코드를 확인
→ 이 경우 시력이 감소할거같다.
방법 2. 컴파일러 제작자의 github 같은 곳을 찾아본다.
→ 방법 1보다는 나아보인다.
→ 만약 두 방법 다 막힌다면 깔끔하게 포기할거임.
https://man7.org/linux/man-pages/man7/libc.7.html
libc(7) - Linux manual page
libc(7) — Linux manual page libc(7) Miscellaneous Information Manual libc(7) NAME top libc - overview of standard C libraries on Linux DESCRIPTION top The term “libc” is commonly used as a shorthand for the “standard C libra
man7.org
해당 링크를 통해 glibc , libc , otherlibc 에 대한 개략적인 내용을 알 수 있음
더 보다가는 시력이 감소할듯하니 적당히 둘러보고 나오자.
→ 꿩 대신 닭 , 식용유 대신 들기름
glibc는 GNU에서 만든 libc 입니다.
오픈소스 라이브러리이기 때문에 이곳의 구현방식을 참고하고 위안 삼으려한다.
https://sourceware.org/glibc/sources.html
The GNU C Library
Download sources Checkout the latest glibc in development: git clone https://sourceware.org/git/glibc.git cd glibc git checkout master Releases are available by source branch checkout (gitweb) and tarball via ftp. Checkout the latest glibc 2.40 stable rele
sourceware.org
내가 태어나기 전부터 있었다니 뜬금없이 감동이다.
내려받은 소스코드를 분석하는건 체력의 한계로 2편으로