libc(7) - wariua/manpages-ko GitHub Wiki
libc - ๋ฆฌ๋ ์ค์ ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค ์๊ฐ
ํํ "ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ"์ ์ค์๋ง๋ก "libc"๋ผ๋ ์ฉ์ด๋ฅผ ์ด๋ค. ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ชจ๋ C ํ๋ก๊ทธ๋จ์์ (๋ ๋๋ก๋ ๋ค๋ฅธ ์ธ์ด๋ก ๋ ํ๋ก๊ทธ๋จ์์) ์ฌ์ฉํ ์ ์๋ ํ์ค ํจ์๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค. ์ด๋ค ์ญ์ฌ์ ์ด์ ๋๋ฌธ์ (์๋ ์ฐธ๊ณ ) ๋ฆฌ๋ ์ค์์ "libc"๋ผ๋ ๋ง๋ก ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํฌ ๋๋ ์ฝ๊ฐ์ ๋ชจํธํจ์ด ์๋ค.
๋ฆฌ๋
์ค์์ ๋จ์ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ GNU C ๋ผ์ด๋ธ๋ฌ๋ฆฌ(http://www.gnu.org/software/libc/)์ด๋ฉฐ glibc๋ผ๊ณ ๋ง์ด ๋ถ๋ฅธ๋ค. ์์ฆ ๋ชจ๋ ์ฃผ์ ๋ฆฌ๋
์ค ๋ฐฐํฌํ์์ ์ฐ๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, ๊ทธ ์ธ๋ถ ๋ด์ฉ๋ค์ด man-pages ํ๋ก์ ํธ์ ๊ด๋ จ ํ์ด์ง๋ค์ (์ฃผ๋ก ๋งค๋ด์ผ์ ์น์
3์) ๊ธฐ๋ก๋ผ ์๋ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋ ํ๋ค. glibc ๋งค๋ด์ผ์ ํตํด์๋ glibc์ ๋ฌธ์๋ฅผ ๋ณผ ์ ์๋๋ฐ, info libc
๋ช
๋ น์ผ๋ก ๊ฐ๋ฅํ๋ค. glibc 1.0์ด 1992๋
9์์ ์ถ์๋์๋ค. (๊ทธ ์ ์ 0.x ์ถ์๊ฐ ์์๋ค.) glibc์ ๋ค์ ํฐ ๋ฒ์ ์ธ 2.0์ด 1997๋
์ด์ ์ถ์๋์๋ค.
๋ณดํต์ ๊ฒฝ๋ก๋ช
/lib/libc.so.6
์ด (๋๋ ๋น์ทํ ๋ญ๊ฐ๊ฐ) glibc ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ด๋ค. ๊ทธ ๊ฒฝ๋ก๋ช
์ ์คํํ๋ฉด glibc๊ฐ ์์คํ
์ ์ค์น๋ ๋ฒ์ ์ ๋ํ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ํ์ํ๊ฒ ๋๋ค.
1990๋
์ด์ค๋ฐ ์ผ๋ง ๋์ Linux libc๊ฐ ์์๋๋ฐ, ๋น์ glibc ๊ฐ๋ฐ์ด ๋ฆฌ๋
์ค์์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑ์ํค์ง ๋ชปํ๋ค๊ณ ๋๋ ๋ฆฌ๋
์ค ๊ฐ๋ฐ์๋ค์ด ๋ง๋ glibc 1.x ํฌํฌ์๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ (ํผ๋์ค๋ฝ๊ฒ๋) ๊ทธ๋ฅ "libc"๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. Linux libc๋ ํฐ ๋ฒ์ ์ผ๋ก 2, 3, 4, 5๋ฅผ ์ถ์ํ๊ณ ์์ ๋ฒ์ ๋ค๋ ์ฌ๋ฟ ์ถ์ํ๋ค. Linux libc 4๋ a.out ๋ฐ์ด๋๋ฆฌ ํ์์ ์ฐ๋ ๋ง์ง๋ง ๋ฒ์ ์ด์ (์์์ ์ธ) ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์์ ์ ๊ณตํ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ด์๋ค. Linux libc 5๋ ELF ๋ฐ์ด๋๋ฆฌ ํ์์ ์ง์ํ๋ ์ฒซ ๋ฒ์งธ ๋ฒ์ ์ด์๋ค. ์ด ๋ฒ์ ์์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ soname์ผ๋ก libc.so.5
๋ฅผ ์ผ๋ค. ํ๋์์ Linux libc๊ฐ ์ฌ๋ฌ ๋ฆฌ๋
์ค ๋ฐฐํฌํ์ ํ์ค C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ค.
ํ์ง๋ง Linux libc ํ๋์ ์๋ ๋๊ธฐ์๋ ๋ถ๊ตฌํ๊ณ (1997๋
์) glibc 2.0์ด ์ถ์๋์ ๋ ๊ทธ๊ฒ Linux libc๋ณด๋ค ๋ซ๋ค๋ ๊ฒ ๋ถ๋ช
ํ๊ณ , Linux libc๋ฅผ ์ฐ๋ ์ฃผ์ ๋ฆฌ๋
์ค ๋ฐฐํฌํ๋ค์ด ๋ชจ๋ ์ด๋ด glibc๋ก ๋๋์๊ฐ๋ค. Linux libc ๋ฒ์ ๋ค๊ณผ์ ํผ๋์ ํผํ๊ธฐ ์ํด glibc 2.0 ๋ฐ ์ดํ์์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ soname์ผ๋ก libc.so.6
์ ์ฌ์ฉํ๋ค.
์ค๋์ ์ผ์ด๋ Linux libc์์ glibc 2.0์ผ๋ก์ ์ ํ ์ดํ๋ก man-pages์์๋ ๋ ์ด์ Linux libc์ ๋ํ ๋ด์ฉ์ ์ ๊ฒฝ์จ์ ๊ธฐ๋กํ์ง ์๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ช๋ช ๋งค๋ด์ผ ํ์ด์ง์ libc4 ๋ฐ libc5๋ฅผ ์ธ๊ธํ๋ ํํ๋ก ๋จ์์๋ Linux libc์ ๋ํ ์ ๋ณด๋ค์ ํ์ ์ ๋ณผ ์ ์๋ค.
๋ฆฌ๋ ์ค์๋ ๋ ํํ๊ฒ ์ฐ์ด๋ ๋ค๋ฅธ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ฌ๋ฌ ๊ฐ์ง ์๋ค. ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ ๊ณต ๊ธฐ๋ฅ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ชจ๋๊ฐ glibc๋ณด๋ค ์์ผ๋ฉฐ, ์๋ฒ ๋๋ ๋ฆฌ๋ ์ค ์์คํ ๊ฐ๋ฐ ๋ฑ์ ์ํด ์์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ก uClibc (http://www.uclibc.org/), dietlibc (http://www.fefe.de/dietlibc/), musl libc (http://www.musl-libc.org/) ๋ฑ์ด ์๋ค. ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ธ๋ถ ๋ด์ฉ์ ๊ทธ์ชฝ man-pages ํ๋ก์ ํธ์์ ๋ค๋ฃฌ๋ค.
syscalls(2), getauxval(3), proc(5), feature_test_macros(7), man-pages(7)
, standards(7), vdso(7)
2016-12-12