libc(7) - wariua/manpages-ko GitHub Wiki

NAME

libc - ๋ฆฌ๋ˆ…์Šค์˜ ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์†Œ๊ฐœ

DESCRIPTION

ํ”ํžˆ "ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ"์˜ ์ค„์ž„๋ง๋กœ "libc"๋ผ๋Š” ์šฉ์–ด๋ฅผ ์“ด๋‹ค. ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ชจ๋“  C ํ”„๋กœ๊ทธ๋žจ์—์„œ (๋˜ ๋•Œ๋กœ๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ๋œ ํ”„๋กœ๊ทธ๋žจ์—์„œ) ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํ•จ์ˆ˜๋“ค์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‹ค. ์–ด๋–ค ์—ญ์‚ฌ์  ์ด์œ  ๋•Œ๋ฌธ์— (์•„๋ž˜ ์ฐธ๊ณ ) ๋ฆฌ๋ˆ…์Šค์—์„œ "libc"๋ผ๋Š” ๋ง๋กœ ํ‘œ์ค€ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ๋Š” ์•ฝ๊ฐ„์˜ ๋ชจํ˜ธํ•จ์ด ์žˆ๋‹ค.

glibc

๋ฆฌ๋ˆ…์Šค์—์„œ ๋‹จ์—ฐ ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” 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๊ฐ€ ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ๋ฒ„์ „์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๊ฒŒ ๋œ๋‹ค.

Linux libc

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 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค

๋ฆฌ๋ˆ…์Šค์—๋Š” ๋œ ํ”ํ•˜๊ฒŒ ์“ฐ์ด๋Š” ๋‹ค๋ฅธ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์žˆ๋‹ค. ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ๊ณต ๊ธฐ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‘๊ฐ€ glibc๋ณด๋‹ค ์ž‘์œผ๋ฉฐ, ์ž„๋ฒ ๋””๋“œ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ๋“ฑ์„ ์œ„ํ•ด ์ž‘์€ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๋กœ uClibc (http://www.uclibc.org/), dietlibc (http://www.fefe.de/dietlibc/), musl libc (http://www.musl-libc.org/) ๋“ฑ์ด ์žˆ๋‹ค. ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์„ธ๋ถ€ ๋‚ด์šฉ์€ ๊ทธ์ชฝ man-pages ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค๋ฃฌ๋‹ค.

SEE ALSO

syscalls(2), getauxval(3), proc(5), feature_test_macros(7), man-pages(7), standards(7), vdso(7)


2016-12-12

โš ๏ธ **GitHub.com Fallback** โš ๏ธ