-
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library)์ ๋ํ ์ดํด๊ณต๋ถ/์ธ์ด 2021. 7. 26. 23:54728x90
์๋ก
๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ผ์ด ๋ง๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด๋ฉด ์ ํํ ๊ฐ๋ ์ ๋ชฐ๋ผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ ธ๋ค ์ฐ๋ ๋๊ตฌ๋ผ๋ ๊ฒ์ ์ด๋ ดํ์ด ์ดํดํ ์ ์๋ค.
์ฌ์ค ์ด ์ ๋๋ง ์ดํดํด๋ ์ฌ์ฉํ๋ ๋ฐ ์ ํ ๋ฌธ์ ๊ฐ ์๊ฒ ์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฅ์ ์ข ๋ฅ(*.dll, *.lib, *so, *a)๊ฐ ์ ๋ค์ํ์ง ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ, ์คํํ๋ ๊ณผ์ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ด์ ์ ์ค๋ฅ๊ฐ ๋๋์ง์ ๊ฐ์ ๊ถ๊ธ์ฆ์ ํด์ํ๊ธฐ ์ํด ์ข ๋ ์์ธํ ์์๋ณด์.
โป ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ ๋๋ก ์ดํดํ๋ ค๋ฉด ์ปดํ์ผ ๊ณผ์ , ํนํ ๋งํน ๊ณผ์ ์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ(Library) ์ ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ์ฉํ ์ ์๊ฒ ๋ฏธ๋ฆฌ ๋ง๋ค์ด์ ธ ์๋ ํจ์๋ ๋ณ์๋ค์ ๋ฌถ์์ด๋ค. ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ์คํ์ ํธ ํ์ผ ํํ๋ก ์กด์ฌํ๋ฉฐ ์ปดํ์ผ ๊ณผ์ (๋งํน ๊ณผ์ )์์ ๋งํน๋์ด ์คํ ๊ฐ๋ฅํ ํ๋ก๊ทธ๋จ์ ์ด๋ฃฌ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฅ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ฐ์ง๋ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ฝ๋ค.
2. ์ฝ๋์ ๋ด์ฉ์ ์จ๊ฒจ ๊ธฐ์ ์ ์ถ์ ๋ฐฉ์งํ ์ ์๋ค.
3. ์ด๋ฏธ ๊ตฌํ๋์ด ์๋ ๊ธฐ๋ฅ๋ค์ ๊ฐ์ ธ๋ค ์ธ ์ ์์ด ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค.
4. ์ปดํ์ผ ์๊ฐ์ ๋จ์ถํ ์ ์๋ค. (๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋์ด ์์ด ๋งํน๋ง ํ๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค)
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ ํค๋ ํ์ผ(.h)์ด ํ์ํ ์ด์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ #include ์ง์๋ฌธ์ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํค๋ ํ์ผ์ ์ฝ์ ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
ํค๋ ํ์ผ์ด ํ์ํ ์ด์ ๋ ๋ง์ปค๊ฐ ์ต์ข ์คํ ํ์ผ์ ์์ฑํ๊ธฐ ์ํด ๋ชจ๋ ํจ์์ ์ฌ๋ณผ์ ํ์๋ก ํ๋๋ฐ ํค๋ ํ์ผ์ด ์ฌ๋ณผ์ ์์ฑํ๋ ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด ์คํ ํ์ผ์ ๋ง๋ค๊ธฐ ์ํด์๋ ํค๋ ํ์ผ์ด ๊ผญ ํ์ํ๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ ๋งํน ๋ฐฉ์๊ณผ ๋์ ๋งํน ๋ฐฉ์์ ๋ฐ๋ผ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(=๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ก ๋๋ ์ ์๋ค.
๊ฒฐ๊ตญ, ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ ๋ฐ ์ฅ๋จ์ ์ ๊ฐ ๋งํน ๋ฐฉ์์ ์ ์ ๋ฐ ์ฅ๋จ์ ๊ณผ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Static Link Library) ์ ์
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์ ๋งํน(Static Linking) ๊ณผ์ ์์ ๋ง์ปค๊ฐ ํ๋ก๊ทธ๋จ์ ํ์๋ก ํ๋ ๋ถ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐพ์ ์คํ ํ์ผ์ ๋ณต์ฌํ๋ ๋ฐฉ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฅ์๋ ์๋์ฐ ํ๊ฒฝ์์๋ *.lib, ๋ฆฌ๋ ์ค ํ๊ฒฝ์์๋ *.a ์ด๋ค,
โป *.lib๋ผ๊ณ ๋ฌด์กฐ๊ฑด ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๋ค. (์๋ ์์์ ๋งํน ์ฐธ๊ณ )
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฅ์
์คํ ํ์ผ์ด ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณต์ฌํด์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์คํํ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ ์๋ค. ์ฆ, ์คํ ํ์ผ๋ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ๋งํผ ์ด์์ฑ์ด ์ข๊ณ ์์ ์ ์ด๋ค.
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์
ํ์ง๋ง ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ช ๊ฐ์ง ๋จ์ ์ด ์กด์ฌํ๋ค.
1. ์คํ ํ์ผ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฉ์ ๋ณต์ฌํด์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ํ์ผ ์ ์ฒด๋ฅผ ๋ค์ ์ปดํ์ผํ์ฌ ์ฌ๋ฐฐํฌํด์ผ ํ๋ค.
2. ์คํ ํ์ผ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋งํผ ์คํ ํ์ผ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค.
3. ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ์ค๋ณต๋์ด ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ญ๋นํ๋ค.
4. ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฒด๋ฅผ ๋งํนํ๋ฉด์ ์ฌ์ฉํ์ง ์๋ ํจ์๋ค๊น์ง ์ ๋ถ ๋ค ํ๋ก๊ทธ๋จ์ ํฌํจํ๋ค.
์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์กด์ฌํ๋ค.
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(DLL, Dynamic Link Library, Shared Library)
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์ ๋งํน(Dynamic Linking) ๊ณผ์ ์์ ๋ง์ปค๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฉ์ ๋ณต์ฌํ์ง ์๊ณ ํด๋น ๋ด์ฉ์ ์ฃผ์๋ง ๊ฐ์ง๊ณ ์๋ค๊ฐ ๋ฐํ์์ ์คํ ํ์ผ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์นํ ๋ ํด๋น ์ฃผ์๋ก ๊ฐ์ ํ์ํ ๋ด์ฉ์ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฅ์๋ ์๋์ฐ ํ๊ฒฝ์์๋ *.dll, ๋ฆฌ๋ ์ค ํ๊ฒฝ์์๋ *.so ์ด๋ค.
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฅ์
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์คํ ํ์ผ ํฌ๊ธฐ๊ฐ ์์์ง๊ณ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋๊ณ ๊ณต์ ํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
๋ํ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ ํ ๋ถ๋ถ์ด ์์ผ๋ฉด ์คํ ํ์ผ์ ์๋ก ์ปดํ์ผํ ํ์ ์์ด ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๋ค์ ์ปดํ์ผํ์ฌ ์ฌ๋ฐฐํฌํ ์ ์๋ค.
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋จ์
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์ฅ์ ๋ง ์๋ ๊ฒ์ ์๋๋ค.
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์คํ ํ์ผ์ ์คํํ ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ๋ค. ๋ง์ฝ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋๋ก ๋งํฌ๋์ด ์์ง ์๊ฑฐ๋ ๋ฒ์ ์ด ๋ง์ง ์๋ ๋ฑ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ์คํ์ด ์ ๋ ์ ์๋ค. ์ฆ, ์ธ๋ถ ์์กด๋๊ฐ ์๊ธฐ๋ฉฐ ์ด์์ฑ์ด ๋ฎ์ ๋จ์ ์ด ์๋ค.
๋ํ, ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋งค๋ฒ ํ๋ก๊ทธ๋จ ์์ญ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ์ฅ๋ ์ฃผ์๋ก ์ด๋ํ๋ ๊ณผ์ ์ด ํ์ํ์ฌ ์ฝ๊ฐ์ ์ฑ๋ฅ ๊ฐ์๊ฐ ์์ ์ ์๋ค.
DLL์ ๋ถ๋ฅ
๋๋๊ฒ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํ๋ฒ ๋ ์ข ๋ฅ๋ฅผ ๋๋ ์ ์๋ค.
์๋์ฐ์์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ *dll ํ์ผ์ด๋ผ ๋ถ๋ฅด๋๋ฐ ์คํ ํ์ผ์์ *dll ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์์์ ๋งํน๊ณผ ๋ช ์์ ๋งํน์ผ๋ก ๋๋ ์ ์๋ค.
์์์ ๋งํน(Implicit Linking)
์์์ ๋งํน์ ์คํ ํ์ผ ์์ฒด์ ์ด๋ค *dll์ ์ด๋ค ํจ์๋ฅผ ํธ์ถํ๊ฒ ๋ค๋ ์ ๋ณด๋ฅผ ํฌํจ์ํค๊ณ ํ๋ก๊ทธ๋จ ์คํ ์ ํด๋น ํจ์๋ค์ ์ด๊ธฐํํ ํ ์ด์ฉํ๋ ๋ฐฉ์์ด๋ค.
ํ๋ก๊ทธ๋จ์ ์์ํ๋ฉด์ ํด๋น *dll์ ๋ก๋ํ๋ฉฐ *dll์ ์ ์๋ ํจ์๋ฅผ ๋ง์น ์์ ์ ํจ์์ฒ๋ผ ํธ์ถํ ์ ์๋ค.
์คํ ํ์ผ์ ์ด๋ค ํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ์ ๋ณด๋ฅผ ํฌํจํ๊ธฐ ์ํด์๋ *lib ํ์ผ์ด ํ์ํ๋ค. ์ด๋, *lib ํ์ผ์ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ ์์์ ๋งํน์ ์ํด ํ์ํ ์ฌ๋ณผ์ด ๋ค์ด์๋ *.lib ํ์ผ๋ก ๋์ ๋งํน ๊ณผ์ ์ ๊ผญ ํ์ํ๋ค.
์ฝ๋๊ฐ ๊ฐ๊ฒฐํ์ฌ ์ฌ์ฉํ๊ธฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค.
ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ *dll ํ์ผ์ด ๋ก๋๋๋ฏ๋ก ์คํ ์ ์ฐ๊ฒฐ์ด๋ผ๊ณ ํํํ๋ค.
๋ช ์์ ๋งํน(Explicit Linking)
๋ช ์์ ๋งํน์ ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ผ ๋ *.dll ํ์ผ์ด ์๋์ง ๊ฒ์ฌํ๊ณ ๋์ ์ผ๋ก ์ํ๋ ํจ์๋ง ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ ํํ๊ฒ๋ ํธ์ถํ ํจ์์ ํฌ์ธํฐ๋ฅผ ์ป์ด ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด๋ผ ํ ์ ์๋ค.
๋งํน ๊ณผ์ ์์ *.dll์ ํจ์ ์ ๋ณด๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ *.lib ํ์ผ์ด ํ์ ์๋ค.
์ง์ ์ฝ๋๋ฅผ ํตํด ์ํ๋ ํจ์๋ง ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ํจ์๋ค๊น์ง ์ ๋ถ ๋ค ํ๋ก๊ทธ๋จ์ ํฌํจํ ํ์๊ฐ ์์ด ์์์ ์๋ ์ ์๋ค.
ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ *.dll ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ฝํ๋ฏ๋ก ์คํ ์ค ์ฐ๊ฒฐ์ด๋ผ๊ณ ํํํ๋ค.
๊ฒฐ๋ก
์ ๋ด์ฉ์ ์ดํดํ๋ค๋ฉด ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฅ์๊ฐ ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ ์ ์๋ค.
*.dll : ์๋์ฐ ํ๊ฒฝ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
*.lib : ์๋์ฐ ํ๊ฒฝ์ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
*so : ๋ฆฌ๋ ์ค ํ๊ฒฝ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
*a : ๋ฆฌ๋ ์ค ํ๊ฒฝ์ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ํ, *.lib๋ผ๊ณ ๋ฌด์กฐ๊ฑด ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋๋ผ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์์ ๋งํน์ ํ์ํ ์ฌ๋ณผ์ด ๋ค์ด์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ ์๋ ์๋ ๊ฒ์ ๋ช ์ฌํ์.
๋๐ค
728x90'๊ณต๋ถ > ์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ปดํ์ผ(Compile)์ ๋ํ ์ดํด (8) 2021.08.28