์ด๊ฒ์ Ubuntu Online, Fedora Online, Windows ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ ๋๋ MAC OS ์จ๋ผ์ธ ์๋ฎฌ๋ ์ดํฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฌด๋ฃ ์จ๋ผ์ธ ์ํฌ์คํ ์ด์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ OnWorks ๋ฌด๋ฃ ํธ์คํ ์ ๊ณต์ ์ฒด์์ ์คํํ ์ ์๋ mips-linux-gnu-ld ๋ช ๋ น์ ๋๋ค.
ํ๋ก๊ทธ๋จ:
์ด๋ฆ
ld - GNU ๋ง์ปค
๊ฐ์
ld [์ต์ ] ๊ฐ์ฒด ํ์ผ ...
๊ธฐ์
ld ์ฌ๋ฌ ๊ฐ์ฒด ๋ฐ ์์นด์ด๋ธ ํ์ผ์ ๊ฒฐํฉํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐฐ์นํ๊ณ ๊ธฐํธ๋ฅผ ๋ฌถ์ต๋๋ค.
์ฐธ์กฐ. ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์ปดํ์ผ์ ๋ง์ง๋ง ๋จ๊ณ๋ ๋ค์์ ์คํํ๋ ๊ฒ์ ๋๋ค. ld.
ld AT&T ๋งํฌ ํธ์ง๊ธฐ์ ์์ ์งํฉ์ผ๋ก ์์ฑ๋ ๋ง์ปค ๋ช ๋ น ์ธ์ด ํ์ผ์ ํ์ฉํฉ๋๋ค.
์ฐ๊ฒฐ ํ๋ก์ธ์ค์ ๋ํ ๋ช ์์ ์ด๊ณ ์์ ํ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ๋ช ๋ น ์ธ์ด ๊ตฌ๋ฌธ.
์ด ๋งค๋ด์ผ ํ์ด์ง์์๋ ๋ช ๋ น ์ธ์ด์ ๋ํด ์ค๋ช ํ์ง ์์ต๋๋ค. ๋ณด๋ค ld ์ ์ฒด์ ๋ํ "์ ๋ณด" ํญ๋ชฉ
๋ช ๋ น ์ธ์ด ๋ฐ GNU ๋ง์ปค์ ๋ค๋ฅธ ์ธก๋ฉด์ ๋ํ ์ธ๋ถ ์ ๋ณด.
์ด ๋ฒ์ ์ ld ๋ฒ์ฉ BFD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ํ์ผ์์ ์๋ํฉ๋๋ค. ์ด๊ฒ
์ ld ๋ค์ํ ํ์์ ๊ฐ์ฒด ํ์ผ์ ์ฝ๊ณ , ๊ฒฐํฉํ๊ณ , ์ฐ๊ธฐ ์ํด ---
์: COFF ๋๋ "a.out". ์๋ก ๋ค๋ฅธ ํ์์ ํจ๊ป ์ฐ๊ฒฐํ์ฌ
์ฌ์ฉ ๊ฐ๋ฅํ ์ข ๋ฅ์ ๊ฐ์ฒด ํ์ผ์ ๋๋ค.
์ ์ฐ์ฑ ์ธ์๋ GNU ๋ง์ปค๋ ๋ค๋ฅธ ๋ง์ปค๋ณด๋ค
์ง๋จ ์ ๋ณด. ๋ง์ ๋ง์ปค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ฆ์ ์คํ์ ํฌ๊ธฐํฉ๋๋ค.
์ค๋ฅ; ์ธ์ ๋ ์ง ๊ฐ๋ฅํ ๋, ld ๊ณ์ ์คํํ์ฌ ๋ค๋ฅธ ์ค๋ฅ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
(๋๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ค๋ฅ์๋ ๋ถ๊ตฌํ๊ณ ์ถ๋ ฅ ํ์ผ์ ์ป๊ธฐ ์ํด).
GNU ๋ง์ปค ld ๊ด๋ฒ์ํ ์ํฉ์ ํฌ๊ดํ๊ณ ํธํ ๊ฐ๋ฅํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
๋ค๋ฅธ ๋ง์ปค์ ๊ฐ๋ฅํ ํ. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ์ดํ ์ ์๋ ๋ง์ ์ ํ๊ถ์ด ์์ต๋๋ค.
ํ๋.
์ต์
๋ง์ปค๋ ์๋ง์ ๋ช ๋ น์ค ์ต์ ์ ์ง์ํ์ง๋ง ์ค์ ๋ก๋ ๊ทธ ์ค ๋ช ๊ฐ์ง๊ฐ
ํน์ ์ปจํ ์คํธ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ฃผ ์ฌ์ฉํ๋ ld ๋งํฌํ๋ ๊ฒ์ ๋๋ค
์ง์๋๋ ํ์ค Unix ์์คํ ์ ํ์ค Unix ๊ฐ์ฒด ํ์ผ. ๊ทธ๋ฌํ ์์คํ ์์,
"hello.o" ํ์ผ ๋งํฌ:
ld-o /lib/crt0.o hello.o -lc
์ด๊ฒ์ ๋งํ๋ค ld ๋ผ๋ ํ์ผ์ ์์ฑํ๊ธฐ ์ํด ์ถ๋ ฅ ํ์ผ์ ๋งํฌํ ๊ฒฐ๊ณผ
"/lib/crt0.o"์ "hello.o" ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ "libc.a"(ํ์ค์์ ๊ฐ์ ธ์ด)
๊ฒ์ ๋๋ ํ ๋ฆฌ. (์ ํ ๋ก ์ฐธ์กฐ -l ์๋ ์ต์ .)
๋ช ๊ฐ์ง ๋ช ๋ น์ค ์ต์ ์ ld ๋ช ๋ น์ค์ ์ด๋ ์ง์ ์์๋ ์ง์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ ์ฐธ์กฐํ๋ ์ต์ ์ -l or -T, ํ์ผ์ ๋ค์ ์์น์์ ์ฝ๋๋ก ํฉ๋๋ค.
๊ฐ์ฒด ํ์ผ๊ณผ ๊ด๋ จํ์ฌ ๋ช ๋ น์ค์ ์ต์ ์ด ๋ํ๋๋ ์ง์
๋ค๋ฅธ ํ์ผ ์ต์ . ๋ค๋ฅธ ์ธ์๋ก ํ์ผ์ด ์๋ ์ต์ ์ ๋ฐ๋ณตํ๋ฉด
๋ ์ด์ ์ํฅ์ ๋ฏธ์น์ง ์๊ฑฐ๋ ์ด์ ๋ฐ์์ ๋ฌด์ํฉ๋๋ค(๋ช ๋ น์์ ๋ ์ผ์ชฝ์ ์๋ ํญ๋ชฉ
ํด๋น ์ต์ ์ ์ค). ์๋ฏธ ์๊ฒ ๋ ๋ฒ ์ด์ ์ง์ ๋ ์ ์๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๋ ์ค๋ช ์ ๋์ ์์ต๋๋ค.
์ต์ ์ด ์๋ ์ธ์๋ ํจ๊ป ๋งํฌ๋ ์ค๋ธ์ ํธ ํ์ผ ๋๋ ์์นด์ด๋ธ์ ๋๋ค. ๊ทธ๋ค
๊ฐ์ฒด ํ์ผ์ด
์ธ์๋ ์ต์ ๊ณผ ํด๋น ์ธ์ ์ฌ์ด์ ๋ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋ ์ ์ด๋ ํ๋์ ๊ฐ์ฒด ํ์ผ๊ณผ ํจ๊ป ํธ์ถ๋์ง๋ง ๋ค๋ฅธ ๊ฐ์ฒด ํ์ผ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ค์์ ์ฌ์ฉํ๋ ๋ฐ์ด๋๋ฆฌ ์ ๋ ฅ ํ์ผ ํ์ -l, -R, ์คํฌ๋ฆฝํธ ๋ช ๋ น ์ธ์ด. ๋ง์ฝ์ ์๋ ์ง
์ ๋ ฅ ํ์ผ์ด ์ ํ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ง์ปค๋ ์ถ๋ ฅ์ ์์ฑํ์ง ์์ผ๋ฉฐ
๋ฉ์์ง ์๋ ์ ๋ ฅ ํ์ผ.
๋ง์ปค๊ฐ ๊ฐ์ฒด ํ์ผ์ ํ์์ ์ธ์ํ ์ ์๋ ๊ฒฝ์ฐ
๋ง์ปค ์คํฌ๋ฆฝํธ. ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ง์ ๋ ์คํฌ๋ฆฝํธ๋ ๋ค์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ๋ณด๊ฐํฉ๋๋ค.
๋งํฌ(๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ ๋๋ -T). ์ด
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ง์ปค๊ฐ ๊ฐ์ฒด ๋๋
์์นด์ด๋ธํ์ง๋ง ์ค์ ๋ก๋ ์ผ๋ถ ๊ธฐํธ ๊ฐ์ ์ ์ํ๊ฑฐ๋ "INPUT" ๋๋ "GROUP"์ ์ฌ์ฉํ์ฌ
๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๋ก๋ํฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ํ๋ฉด ๋จ์ํ ๋ฉ์ธ ๋ง์ปค๋ฅผ ๋ณด๊ฐํ ๋ฟ์ ๋๋ค.
์คํฌ๋ฆฝํธ, ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ ๋ค์ ์ถ๊ฐ ๋ช ๋ น์ด ๋ฐฐ์น๋ฉ๋๋ค. ์ฌ์ฉ -T ๊ต์ฒด ์ต์
๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ ์ฌ์ฉํ์ง๋ง "INSERT" ๋ช ๋ น์ ํจ๊ณผ์ ์ ์ํ์ญ์์ค.
์ด๋ฆ์ด ๋จ์ผ ๋ฌธ์์ธ ์ต์ ์ ๊ฒฝ์ฐ ์ต์ ์ธ์๋ ๋ค์ ์ค ํ๋๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
๊ณต๋ฐฑ์ด ์๋ ์ต์ ๋ฌธ์ ๋๋ ๋ณ๋์ ์ธ์๋ก ์ ๊ณต
๊ทธ๊ฒ๋ค์ ํ์๋ก ํ๋ ์ต์ ์ ์ฆ์ ๋ฐ๋ฅด์ญ์์ค.
์ด๋ฆ์ด ์ฌ๋ฌ ๊ธ์์ธ ์ต์ ์ ๊ฒฝ์ฐ ํ๋ ๋๋ ๋ ๊ฐ์ ๋์๊ฐ ์์ ์ฌ ์ ์์ต๋๋ค.
์ต์ ์ด๋ฆ; ์๋ฅผ ๋ค์ด, -์ถ์ ๊ธฐํธ and --์ถ์ ๊ธฐํธ ๋๋ฑํฉ๋๋ค. ์ฐธ๊ณ --- ๊ฑฐ๊ธฐ
์ด ๊ท์น์ ํ ๊ฐ์ง ์์ธ์ ๋๋ค. ์๋ฌธ์ 'o'๋ก ์์ํ๋ ์ฌ๋ฌ ๋ฌธ์ ์ต์
๋ ๊ฐ์ ๋์๋ง ์์ ์ฌ ์ ์์ต๋๋ค. ์ ํผ๋์ ์ค์ด๊ธฐ ์ํจ์ ๋๋ค. -o ์ต์ . ๊ทธ๋์
์๋ฅผ ๋ค๋ฉด -๋ง๋ฒ ์ถ๋ ฅ ํ์ผ ์ด๋ฆ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ๋ง๋ฒ ์ด๋ฏ๋ก --์ค๋งค์ง NMAGIC ์ค์
์ถ๋ ฅ์ ํ๋๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ฌ๋ฌ ๋ฌธ์ ์ต์ ์ ๋ํ ์ธ์๋ ์ต์ ์ด๋ฆ๊ณผ
๋ฑํธ, ๋๋ ๋ค์ ์ต์ ๋ฐ๋ก ๋ค์ ๋ณ๋์ ์ธ์๋ก ์ฃผ์ด์ง๋๋ค.
๊ทธ๊ฒ๋ค์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, --์ถ์ ๊ธฐํธ ํธ and --์ถ์ ๊ธฐํธ=foo ๋๋ฑํฉ๋๋ค.
์ฌ๋ฌ ๋ฌธ์ ์ต์ ์ด๋ฆ์ ๊ณ ์ ํ ์ฝ์ด๊ฐ ํ์ฉ๋ฉ๋๋ค.
์ฐธ๊ณ ---๋ง์ปค๊ฐ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ํธ์ถ๋๋ ๊ฒฝ์ฐ(์: GCC) ๊ทธ ๋
๋ชจ๋ ๋ง์ปค ๋ช ๋ น์ค ์ต์ ์๋ ์ ๋์ฌ๋ฅผ ๋ถ์ฌ์ผ ํฉ๋๋ค. -NS, (๋๋ ์ ์ ํ
ํน์ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ์ ๊ฒฝ์ฐ) ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
gcc -Wl,--์์-๊ทธ๋ฃน foo.o bar.o -Wl,--end-group
๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก
๋ง์ปค ์ต์ ์ผ๋ก ์ธํด ์๋ชป๋ ๋งํฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ต์ ์ ์ ๋ฌํ ๋ ํผ๋์ด ๋ฐ์ํ ์๋ ์์ต๋๋ค.
์ต์ ๊ณผ ์ธ์ ์ฌ์ด์ ๊ณต๋ฐฑ์ ์ฌ์ฉํ์ฌ ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ
๊ตฌ๋ถ์ ์ญํ ์ ํ๊ณ ๋๋ผ์ด๋ฒ๊ฐ ๋ง์ปค์ ์ต์ ๋ง ์ ๋ฌํ๊ณ
์ปดํ์ผ๋ฌ์ ๋ํ ์ธ์. ์ด ๊ฒฝ์ฐ ๋ ํ์์ ๊ฒฐํฉ๋ ํํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ๊ฐ๋จํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋จ์ผ ๋ฐ ๋ค์ค ๋ฌธ์ ์ต์ :
gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map
๋ค์์ GNU ๋ง์ปค์์ ํ์ฉํ๋ ์ผ๋ฐ ๋ช ๋ น์ค ์ค์์น์ ํ์ ๋๋ค.
@ํ์ผ
๋ค์์์ ๋ช ๋ น์ค ์ต์ ์ฝ๊ธฐ ํ์ผ. ์ฝ์ ์ต์ ์ ๋ค์ ์์น์ ์ฝ์ ๋ฉ๋๋ค.
์๋์ @ํ์ผ ์ต์ . ๋ง์ฝ์ ํ์ผ ์กด์ฌํ์ง ์๊ฑฐ๋ ์ฝ์ ์ ์๋ ๊ฒฝ์ฐ ์ต์
๋ฌธ์ ๊ทธ๋๋ก ์ฒ๋ฆฌ๋๋ฉฐ ์ ๊ฑฐ๋์ง ์์ต๋๋ค.
์ต์ ํ์ผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ๊ณต๋ฐฑ ๋ฌธ์๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
์ต์ ์์ ์ ์ฒด ์ต์ ์ ์์๋ฐ์ดํ๋ ํฐ๋ฐ์ดํ๋ก ๋ฌถ์ต๋๋ค. ์ด๋
๋ฌธ์(๋ฐฑ์ฌ๋์ ํฌํจ)๋
๋ฐฑ์ฌ๋์์ ํจ๊ป ํฌํจ๋ฉ๋๋ค. NS ํ์ผ ์์ฒด์ ์ถ๊ฐ @๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.ํ์ผ ์ต์ ; ์ด๋
์ด๋ฌํ ์ต์ ์ ์ฌ๊ท์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
-a ํค์๋๋
์ด ์ต์ ์ HP/UX ํธํ์ฑ์ ์ํด ์ง์๋ฉ๋๋ค. NS ํค์๋๋ ์ธ์๋ ๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
๋ฌธ์์ด ์์นด์ด๋ธ, ๊ณต์ ๋ฐ ๋ํดํธ ๊ฐ. -์์นด์ด๋ธ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-๋น์ ์ , ๋ค๋ฅธ ๋ ํค์๋๋ ๊ธฐ๋ฅ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -๋น๋ค์ด๋๋ฏน. ์ด
์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
--์ฌ์ฌ ๊ฐ์ฌํฉ๋๋ค
์ถ๊ฐ ๊ฐ์ฌํฉ๋๋ค ๋์ ์น์ ์ "DT_AUDIT" ํญ๋ชฉ์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค ์ฒดํฌ๋์ด ์์ง ์๋ค
์กด์ฌํ์ง ์์ผ๋ฉฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ง์ ๋ DT_SONAME๋ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ง์ ๋ ๊ฒฝ์ฐ
์ฌ๋ฌ ๋ฒ "DT_AUDIT"์๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๊ฐ์ฌ ์ธํฐํ์ด์ค ๋ชฉ๋ก์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ฉํ๋ค. ๋ง์ปค๊ฐ ๊ณต์ ํญ๋ชฉ์ ๊ฒ์ํ๋ ๋์ ๊ฐ์ฌ ํญ๋ชฉ์ด ์๋ ๊ฐ์ฒด๋ฅผ ์ฐพ์ ๊ฒฝ์ฐ
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ์ถ๋ ฅ ํ์ผ์ ํด๋น "DT_DEPAUDIT" ํญ๋ชฉ์ ์ถ๊ฐํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ rtld-audit ์ธํฐํ์ด์ค๋ฅผ ์ง์ํ๋ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
-A ์ํคํ ์ฒ
--์ํคํ ์ฒ=์ํคํ ์ฒ
ํ์ฌ ๋ฆด๋ฆฌ์ค์์๋ ld, ์ด ์ต์ ์ Intel 960 ์ ํ๊ตฐ์๋ง ์ ์ฉํฉ๋๋ค.
์ํคํ ์ฒ. ๊ทธ ์์ ld ๊ตฌ์ฑ, ์ํคํ ์ฒ ์ธ์ ์๋ณ
960 ์ ํ๊ตฐ์ ํน์ ์ํคํ ์ฒ๋ ์ผ๋ถ ๋ณดํธ ๊ธฐ๋ฅ์ ํ์ฑํํ๊ณ
์์นด์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๊ฒฝ๋ก.
ํฅํ ๋ฆด๋ฆฌ์ค ld ๋ค๋ฅธ ์ํคํ ์ฒ์ ๋ํด ์ ์ฌํ ๊ธฐ๋ฅ์ ์ง์ํ ์ ์์
๊ฐ์กฑ๋ค.
-b ์ ๋ ฅ ํ์
--ํ์=์ ๋ ฅ ํ์
ld ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด ํ์ผ์ ์ง์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ง์ฝ ๋น์ ์ ld is
์ด ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. -b ์ ๋ ฅ์ ๋ํ ์ด์ง ํ์์ ์ง์ ํ๋ ์ต์
๋ช ๋ น์ค์์ ์ด ์ต์ ๋ค์ ์ค๋ ๊ฐ์ฒด ํ์ผ. ๊ฒฝ์ฐ์๋ ld ๊ตฌ์ฑ
๋์ฒด ๊ฐ์ฒด ํ์์ ์ง์ํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค. ld
๊ฐ ํ์์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ์์ ๊ธฐ๋ณธ ์ ๋ ฅ ํ์์ผ๋ก ์์ํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๊ธฐ๊ณ. ์ ๋ ฅ ํ์ ์ง์ํ๋ ํน์ ํ์์ ์ด๋ฆ์ธ ํ ์คํธ ๋ฌธ์์ด์ ๋๋ค.
BFD ๋ผ์ด๋ธ๋ฌ๋ฆฌ. (๋ค์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ํ์์ ๋์ดํ ์ ์์ต๋๋ค. ๊ฐ์ฒด ๋คํ -i.)
๋น์ ์์ ์ธ ๋ฐ์ด๋๋ฆฌ๋ก ํ์ผ์ ๋งํฌํ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒด์ฌ. ๋น์ ์ ๋ํ ์ฌ์ฉํ ์ ์์ต๋๋ค -b ํ์์ ๋ช ์์ ์ผ๋ก ์ ํํ๋ ค๋ฉด(๊ฐ์ฒด ํ์ผ์ ์ฐ๊ฒฐํ ๋
๋ค์ํ ํ์) ํฌํจํ์ฌ -b ์ ๋ ฅ ํ์ ๊ฐ ๊ฐ์ฒด ํ์ผ ๊ทธ๋ฃน ์์
ํน์ ํ์์ผ๋ก.
๊ธฐ๋ณธ ํ์์ ํ๊ฒฝ ๋ณ์ "GNUTARGET"์์ ๊ฐ์ ธ์ต๋๋ค.
"TARGET" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ์์ ์ ๋ ฅ ํ์์ ์ ์ํ ์๋ ์์ต๋๋ค.
-c MRI ๋ช ๋ น ํ์ผ
--mri ์คํฌ๋ฆฝํธ=MRI ๋ช ๋ น ํ์ผ
MRI๋ก ์์ฑ๋ ๋ง์ปค์์ ํธํ์ฑ์ ์ํด, ld ์ ์์ฑ๋ ์คํฌ๋ฆฝํธ ํ์ผ์ ํ์ฉํฉ๋๋ค.
MRI ํธํ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ค๋ช ๋ ์ ํ๋ ๋์ฒด ๋ช ๋ น ์ธ์ด
GNU ld ๋ฌธ์์ ์น์ . ์ต์ ์ด ์๋ MRI ์คํฌ๋ฆฝํธ ํ์ผ ์๊ฐ -c; ์ฌ์ฉํ๋ค
์ ์, -T ๋ฒ์ฉ์ผ๋ก ์์ฑ๋ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ์ต์ ld ์คํฌ๋ฆฝํ
์ธ์ด. ๋ง์ฝ์ MRI cmdfile ์กด์ฌํ์ง ์๋๋ค, ld ์ง์ ๋ ๋๋ ํ ๋ฆฌ์์ ์ฐพ์ต๋๋ค.
๋๊ตฌ๋ ์ง -L ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
-d
-dc
-dp ์ด ์ธ ๊ฐ์ง ์ต์ ์ ๋์ผํฉ๋๋ค. ํธํ์ฑ์ ์ํด ์ฌ๋ฌ ํ์์ด ์ง์๋ฉ๋๋ค.
๋ค๋ฅธ ๋ง์ปค์ ํจ๊ป. ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ์ถ๋ ฅ์ด ์๋๋ผ๋ ๊ณตํต ๊ธฐํธ์ ๊ณต๊ฐ์ ํ ๋นํฉ๋๋ค.
ํ์ผ์ด ์ง์ ๋์์ต๋๋ค( -r). ์คํฌ๋ฆฝํธ ๋ช ๋ น "FORCE_COMMON_ALLOCATION"์๋
๊ฐ์ ํจ๊ณผ.
--deaudit ๊ฐ์ฌํฉ๋๋ค
-P ๊ฐ์ฌํฉ๋๋ค
์ถ๊ฐ ๊ฐ์ฌํฉ๋๋ค ๋์ ์น์ ์ "DT_DEPAUDIT" ํญ๋ชฉ์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค ํ์ง ์์ต๋๋ค
์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ฑฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ง์ ๋ DT_SONAME์ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๋ง์ฝ์
์ฌ๋ฌ ๋ฒ ์ง์ "DT_DEPAUDIT"์๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถ๋ ๊ฐ์ฌ ๋ชฉ๋ก์ด ํฌํจ๋ฉ๋๋ค.
์ฌ์ฉํ ์ธํฐํ์ด์ค. ์ด ์ต์ ์ ๋ค์์ ์ง์ํ๋ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
rtld-audit ์ธํฐํ์ด์ค. -P ์ต์ ์ Solaris ํธํ์ฑ์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
-e ํญ๋ชฉ
--ํญ๋ชฉ=ํญ๋ชฉ
ํญ๋ชฉ ํ๋ก๊ทธ๋จ ์คํ์ ์์ํ๊ธฐ ์ํ ๋ช ์์ ๊ธฐํธ๋ก
๊ธฐ๋ณธ ์ง์ ์ . ๋ช ๋ช ๋ ๊ธฐํธ๊ฐ ์๋ ๊ฒฝ์ฐ ํญ๋ชฉ, ๋ง์ปค๋
ํด์ํ๋ค ํญ๋ชฉ ์ซ์๋ก ์ ๋ ฅํ๊ณ ์ด๋ฅผ ์ ๋ ฅ ์ฃผ์๋ก ์ฌ์ฉํฉ๋๋ค(์ซ์๋
10์ง๋ฒ์ผ๋ก ํด์๋จ; ๋น์ ์ ์ ํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค 0x 16์ง๋ฒ ๋๋ ์ ํ 0 ๋ฒ ์ด์ค์ฉ
8).
--์ ์ธ-libs lib,lib, ...
๊ธฐํธ๊ฐ ์๋์ผ๋ก ์์ฑ๋์ง ์์์ผ ํ๋ ์์นด์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
์์ถ. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ์ ์ผํ ๋๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ์ง์
"--exclude-libs ALL"์ ์๋ ๋ด๋ณด๋ด๊ธฐ์์ ๋ชจ๋ ์์นด์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐํธ๋ฅผ ์ ์ธํฉ๋๋ค.
์ด ์ต์ ์ ๋ง์ปค์ i386 PE ๋์ ํฌํธ ๋ฐ ELF์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ ํฌํธ. i386 PE์ ๊ฒฝ์ฐ .def ํ์ผ์ ๋ช ์์ ์ผ๋ก ๋์ด๋ ๊ธฐํธ๋ ์ฌ์ ํ
์ด ์ต์ ์ ๊ด๊ณ์์ด ๋ด๋ณด๋ ๋๋ค. ELF ๋์ ํฌํธ์ ๊ฒฝ์ฐ ์ด ์ํฅ์ ๋ฐ๋ ๊ธฐํธ
์ต์ ์ ์จ๊น์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
--implib์ ๋ํ ๋ชจ๋ ์ ์ธ ๋ชจ๋,๋ชจ๋, ...
๊ธฐํธ๊ฐ ์์ด์ผ ํ๋ ๊ฐ์ฒด ํ์ผ ๋๋ ์์นด์ด๋ธ ๊ตฌ์ฑ์์ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค.
์๋์ผ๋ก ๋ด๋ณด๋ด์ง์ง๋ง ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋งค๋ก ๋ณต์ฌํด์ผ ํฉ๋๋ค.
๋งํฌ ์ค์ ์์ฑ๋ฉ๋๋ค. ๋ชจ๋ ์ด๋ฆ์ ์ผํ ๋๋
์ฝ๋ก ์ ์ฌ์ฉํ๊ณ ๋ค์์์ ์ฌ์ฉํ๋ ํ์ผ ์ด๋ฆ๊ณผ ์ ํํ ์ผ์นํด์ผ ํฉ๋๋ค. ld ํ์ผ์ ์ด๋ ค๋ฉด ์์นด์ด๋ธ์ฉ
๊ตฌ์ฑ์, ์ด๊ฒ์ ๋จ์ํ ๊ตฌ์ฑ์ ์ด๋ฆ์ด์ง๋ง ๊ฐ์ฒด ํ์ผ์ ๊ฒฝ์ฐ ๋์ด๋ ์ด๋ฆ์
๋ง์ปค์ ์ ๋ ฅ ํ์ผ์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ฒ ํฌํจํ๊ณ ์ผ์น์ํต๋๋ค.
๋ช ๋ น์ค. ์ด ์ต์ ์ i386 PE ๋์ ํฌํธ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง์ปค. .def ํ์ผ์ ๋ช ์์ ์ผ๋ก ๋์ด๋ ๊ธฐํธ๋
์ด ์ต์ .
-E
--๋ด๋ณด๋ด๊ธฐ-๋์
--๋ด๋ณด๋ด๊ธฐ-๋์ ์์
๋์ ์ผ๋ก ๋งํฌ๋ ์คํ ํ์ผ์ ์์ฑํ ๋, -E ์ต์ ๋๋
--๋ด๋ณด๋ด๊ธฐ-๋์ ์ต์ ์ ๋ง์ปค๊ฐ ๋ชจ๋ ๊ธฐํธ๋ฅผ ๋์ ๊ธฐํธ์ ์ถ๊ฐํ๋๋ก ํฉ๋๋ค.
ํ ์ด๋ธ. ๋์ ๊ธฐํธ ํ ์ด๋ธ์ ๋์ ์์ ๋ณผ ์ ์๋ ๊ธฐํธ ์งํฉ์ ๋๋ค.
๋ฐํ์์ ๊ฐ์ฒด.
์ด ์ต์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ง ์๊ฑฐ๋ --๋ด๋ณด๋ด๊ธฐ-๋์ ์์ ~์ ๋ํ ์ต์
๊ธฐ๋ณธ ๋์ ๋ณต์), ๋์ ๊ธฐํธ ํ ์ด๋ธ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์ ํญ๋ชฉ๋ง ํฌํจ๋ฉ๋๋ค.
๋งํฌ์ ์ธ๊ธ๋ ์ผ๋ถ ๋์ ๊ฐ์ฒด์์ ์ฐธ์กฐํ๋ ๊ธฐํธ์ ๋๋ค.
"dlopen"์ ์ฌ์ฉํ์ฌ ๊ธฐํธ๋ฅผ ๋ค์ ์ฐธ์กฐํด์ผ ํ๋ ๋์ ๊ฐ์ฒด๋ฅผ ๋ก๋ํ๋ ๊ฒฝ์ฐ
๋ค๋ฅธ ๋์ ๊ฐ์ฒด๊ฐ ์๋ ํ๋ก๊ทธ๋จ์์ ์ ์ํ ๊ฒฝ์ฐ
ํ๋ก๊ทธ๋จ ์์ฒด๋ฅผ ์ฐ๊ฒฐํ ๋ ์ด ์ต์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋์ ๋ชฉ๋ก์ ์ฌ์ฉํ์ฌ ์ถ๊ฐํด์ผ ํ๋ ๊ธฐํธ๋ฅผ ์ ์ดํ ์๋ ์์ต๋๋ค.
์ถ๋ ฅ ํ์์ด ์ง์ํ๋ ๊ฒฝ์ฐ ๋์ ๊ธฐํธ ํ ์ด๋ธ์ ๋๋ค. ์ ๋ํ ์ค๋ช ์ ์ฐธ์กฐํ์ญ์์ค.
--๋์ ๋ชฉ๋ก.
์ด ์ต์ ์ ELF ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค. PE ๋ชฉํ๋ ์ ์ฌํ ์ง์
DLL ๋๋ EXE์์ ๋ชจ๋ ๊ธฐํธ๋ฅผ ๋ด๋ณด๋ด๋ ๊ธฐ๋ฅ; ์ ์ค๋ช ์ ์ฐธ์กฐํ์ญ์์ค
--๋ด๋ณด๋ด๊ธฐ-๋ชจ๋ ๊ธฐํธ ์๋.
-EB ๋น ์๋์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ๊ธฐ๋ณธ ์ถ๋ ฅ ํ์์ ์ํฅ์ ์ค๋๋ค.
-์์ ๋ฆฌํ ์๋์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๋ ๊ธฐ๋ณธ ์ถ๋ ฅ ํ์์ ์ํฅ์ ์ค๋๋ค.
-f name
--๋ณด์กฐ=name
ELF ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ด๋ถ DT_AUXILIARY ํ๋๋ฅผ
์ง์ ๋ ์ด๋ฆ. ์ด๊ฒ์ ๋์ ๋ง์ปค์๊ฒ ๊ณต์ ๋ ์ฌ๋ณผ ํ ์ด๋ธ์ด
๊ฐ์ฒด๋ ๊ณต์ ๊ฐ์ฒด์ ์ฌ๋ณผ ํ ์ด๋ธ์์ ๋ณด์กฐ ํํฐ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
name.
๋์ค์ ์ด ํํฐ ๊ฐ์ฒด์ ๋ํด ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ฉด ๋ค์์ ์คํํ ๋
ํ๋ก๊ทธ๋จ์์ ๋์ ๋ง์ปค๋ DT_AUXILIARY ํ๋๋ฅผ ๋ณผ ๊ฒ์ ๋๋ค. ๋์ ๋ง์ปค์ ๊ฒฝ์ฐ
ํํฐ ๊ฐ์ฒด์ ๋ชจ๋ ๊ธฐํธ๋ฅผ ํ์ธํ๋ฉด ๋จผ์ ๋ค์ ํญ๋ชฉ์ด ์๋์ง ํ์ธํฉ๋๋ค.
๊ณต์ ๊ฐ์ฒด์ ์ ์ name. ํ๋๊ฐ ์์ผ๋ฉด ๋์ ์ฌ์ฉ๋ฉ๋๋ค.
ํํฐ ๊ฐ์ฒด์ ์ ์. ๊ณต์ ๊ฐ์ฒด name ์กด์ฌํ ํ์๊ฐ ์์ต๋๋ค. ๊ทธ๋์
๊ณต์ ๊ฐ์ฒด name ํน์ ๊ธฐ๋ฅ์ ๋์ฒด ๊ตฌํ์ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ, ์๋ง๋ ๋๋ฒ๊น ๋๋ ์์คํ ํน์ ์ฑ๋ฅ์ ์ํ ๊ฒ์ ๋๋ค.
์ด ์ต์ ์ ๋ ๋ฒ ์ด์ ์ง์ ํ ์ ์์ต๋๋ค. DT_AUXILIARY ํญ๋ชฉ์ด ์์ฑ๋ฉ๋๋ค.
๋ช ๋ น์ค์ ๋ํ๋๋ ์์๋๋ก.
-F name
--ํํฐ=name
ELF ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ด๋ถ DT_FILTER ํ๋๋ฅผ ์ง์ ๋
์ด๋ฆ. ์ด๊ฒ์ ๋์ ๋ง์ปค์๊ฒ ๊ณต์ ๊ฐ์ฒด์ ์ฌ๋ณผ ํ ์ด๋ธ์ด
์์ฑ๋๊ณ ์๋ ๊ฒ์ ๊ณต์ ๊ฐ์ฒด์ ์ฌ๋ณผ ํ ์ด๋ธ์ ๋ํ ํํฐ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค.
name.
๋์ค์ ์ด ํํฐ ๊ฐ์ฒด์ ๋ํด ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๋ฉด ๋ค์์ ์คํํ ๋
ํ๋ก๊ทธ๋จ์์ ๋์ ๋ง์ปค๋ DT_FILTER ํ๋๋ฅผ ๋ณผ ๊ฒ์ ๋๋ค. ๋์ ๋ง์ปค๋
ํ์์ ๊ฐ์ด ํํฐ ๊ฐ์ฒด์ ๊ธฐํธ ํ ์ด๋ธ์ ๋ฐ๋ผ ๊ธฐํธ๋ฅผ ํด๊ฒฐํ์ง๋ง
์ค์ ๋ก ๊ณต์ ๊ฐ์ฒด์์ ์ฐพ์ ์ ์์ ์ฐ๊ฒฐ๋ฉ๋๋ค. name. ๊ทธ๋์
ํํฐ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์์ ์ ๊ณตํ๋ ๊ธฐํธ์ ํ์ ์งํฉ์ ์ ํํ ์ ์์ต๋๋ค.
name.
์ผ๋ถ ์ค๋๋ ๋ง์ปค๋ ๋ค์์ ์ฌ์ฉํ์ต๋๋ค. -F ์ ๋ํ ์ปดํ์ผ ๋๊ตฌ ์ฒด์ธ ์ ์ฒด์ ์ต์
์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ๋ชฉ์ ํ์ผ ๋ชจ๋์ ๋ํด ๋ชฉ์ ํ์ผ ํ์์ ์ง์ ํฉ๋๋ค. GNU ๋ง์ปค
์ด ๋ชฉ์ ์ ์ํด ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. -b, --์ฒด์ฌ, --oํ์ ์ต์ ,
๋ง์ปค ์คํฌ๋ฆฝํธ์ "TARGET" ๋ช ๋ น ๋ฐ "GNUTARGET" ํ๊ฒฝ ๋ณ์. GNU
๋ง์ปค๋ ๋ฌด์ํฉ๋๋ค -F ELF ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์ ๋ ์ต์ .
-ํผ๋=name
ELF ์คํ ํ์ผ ๋๋ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์คํ ํ์ผ ๋๋
DT_FINI๋ฅผ ํจ์์ ์ฃผ์๋ก ์ค์ ํ์ฌ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์ธ๋ก๋ํฉ๋๋ค. ์ ์ํด
๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ปค๋ ํธ์ถํ ํจ์๋ก "_fini"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-g ๋ฌด์๋จ. ๋ค๋ฅธ ๋๊ตฌ์์ ํธํ์ฑ์ ์ํด ์ ๊ณต๋ฉ๋๋ค.
-G ๊ฐ์น
--gpํฌ๊ธฐ=๊ฐ์น
GP ๋ ์ง์คํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ํํ ๊ฐ์ฒด์ ์ต๋ ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ํฌ๊ธฐ. ์ด
๋์ฉ๋ ํ์ผ์ ์ง์ํ๋ MIPS ELF์ ๊ฐ์ ๊ฐ์ฒด ํ์ผ ํ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ค๋ฅธ ์น์ ์ผ๋ก ์์ ๊ฐ์ฒด. ๋ค๋ฅธ ๋ชฉ์ ํ์ผ์์๋ ๋ฌด์๋ฉ๋๋ค.
ํ์.
-h name
-์ด๋ฆ=name
ELF ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ด๋ถ DT_SONAME ํ๋๋ฅผ ์ง์ ๋
์ด๋ฆ. ์คํ ํ์ผ์ด DT_SONAME ํ๋๊ฐ ์๋ ๊ณต์ ๊ฐ์ฒด์ ๋งํฌ๋๋ฉด,
๊ทธ๋ฐ ๋ค์ ์คํ ํ์ผ์ด ์คํ๋ ๋ ๋์ ๋ง์ปค๋ ๊ณต์ ๋ก๋๋ฅผ ์๋ํฉ๋๋ค.
์ฃผ์ด์ง ํ์ผ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋์ DT_SONAME ํ๋์ ์ํด ์ง์ ๋ ๊ฐ์ฒด
๋ง์ปค.
-i ์ฆ๋ถ ๋งํฌ ์ํ(์ต์ ๊ณผ ๋์ผ -r).
-์ด๊ธฐํ=name
ELF ์คํ ํ์ผ ๋๋ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์คํ ํ์ผ ๋๋
๊ณต์ ๊ฐ์ฒด๋ DT_INIT๋ฅผ ํจ์์ ์ฃผ์๋ก ์ค์ ํ์ฌ ๋ก๋๋ฉ๋๋ค. ์ ์ํด
๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ปค๋ ํธ์ถํ ํจ์๋ก "_init"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-l ์ด๋ฆ ์ฌ์
--๋ผ์ด๋ธ๋ฌ๋ฆฌ=์ด๋ฆ ์ฌ์
๋ค์์ผ๋ก ์ง์ ๋ ์์นด์ด๋ธ ๋๋ ๊ฐ์ฒด ํ์ผ์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ฆ ์ฌ์ ๋งํฌํ ํ์ผ ๋ชฉ๋ก์ผ๋ก ์ด๋ํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ฝ์ ์ด๋ฆ ์ฌ์ ํ์์ด๋ค :ํ์ผ ์ด๋ฆ, ld
๋ผ๋ ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ๊ฒ์ํฉ๋๋ค. ํ์ผ ์ด๋ฆ, ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฒ์ํฉ๋๋ค
๋ผ๋ ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก libnamespec.a.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ์์คํ ์์ ld ์ด์ธ์ ํ์ผ์ ๊ฒ์ํ ์๋ ์์ต๋๋ค.
libnamespec.a. ํนํ ELF ๋ฐ SunOS ์์คํ ์์ ld ์ ๋ํ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํฉ๋๋ค
๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ libnamespec.so ๋ผ๋ ์ด๋ฆ์ ๊ฒ์ํ๊ธฐ ์ ์ libnamespec.a. (์ ์ํด
๊ท์น์์ ".so" ํ์ฅ์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ํ๋ ๋๋ค.) ์ด ๋์์ ์ ์ํ์ญ์์ค.
์ ์ฉ๋์ง ์์ต๋๋ค :ํ์ผ ์ด๋ฆ, ํญ์ ์ด๋ผ๋ ํ์ผ์ ์ง์ ํฉ๋๋ค. ํ์ผ ์ด๋ฆ.
๋ง์ปค๋ ์์นด์ด๋ธ๊ฐ ์ง์ ๋ ์์น์์ ์์นด์ด๋ธ๋ฅผ ํ ๋ฒ๋ง ๊ฒ์ํฉ๋๋ค.
๋ช ๋ น์ค. ์์นด์ด๋ธ๊ฐ ์ผ๋ถ ๊ฐ์ฒด์์ ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ์ ์ํ๋ ๊ฒฝ์ฐ
๋ช ๋ น์ค์์ ์์นด์ด๋ธ ์์ ๋ํ๋ ๋ง์ปค๋ ๋ค์์ ํฌํจํฉ๋๋ค.
์์นด์ด๋ธ์์ ์ ์ ํ ํ์ผ(๋ค). ๊ทธ๋ฌ๋ ๊ฐ์ฒด์ ์ ์๋์ง ์์ ๊ธฐํธ
๋์ค์ ๋ช ๋ น์ค์ ๋ํ๋๋ฉด ๋ง์ปค๊ฐ ์์นด์ด๋ธ๋ฅผ ๊ฒ์ํ์ง ์์ต๋๋ค.
๋.
์ ์ฐธ์กฐ -( ๋ง์ปค๊ฐ ์์นด์ด๋ธ๋ฅผ ์ฌ๋ฌ ๋ฒ ๊ฒ์ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ต์ ์ ๋๋ค.
๋ช ๋ น์ค์ ๋์ผํ ์์นด์ด๋ธ๋ฅผ ์ฌ๋ฌ ๋ฒ ๋์ดํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์ ํ์ ์์นด์ด๋ธ ๊ฒ์์ Unix ๋ง์ปค์ ํ์ค์ ๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ด
์ฌ์ฉ ld AIX์์๋ AIX ๋ง์ปค์ ๋์๊ณผ ๋ค๋ฆ ๋๋ค.
-L ๊ฒ์ ๋๋ ํ ๋ฆฌ
--๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก=๊ฒ์ ๋๋ ํ ๋ฆฌ
๊ฒฝ๋ก ์ถ๊ฐ ๊ฒ์ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก ๋ชฉ๋ก์ ld ์์นด์ด๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํ๊ณ
ld ์ ์ด ์คํฌ๋ฆฝํธ. ์ด ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ ํ ๋ฆฌ๋
๋ช ๋ น์ค์ ์ง์ ๋ ์์๋๋ก ๊ฒ์๋ฉ๋๋ค. ๋๋ ํ ๋ฆฌ
๋ช ๋ น์ค์ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ๋ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ๋ณด๋ค ๋จผ์ ๊ฒ์๋ฉ๋๋ค. ๋ชจ๋ -L
์ต์ ์ ๋ชจ๋์ ์ ์ฉ๋ฉ๋๋ค. -l ์ต์ ์ด ํ์๋๋ ์์์ ๊ด๊ณ์์ด ์ต์ ์ด ํ์๋ฉ๋๋ค.
-L ์ต์ ์ ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ld ๋ค์์ ์ ์ธํ๊ณ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ํฉ๋๋ค. -T ์ต์ ์
์ง์ ๋์์ต๋๋ค.
If ๊ฒ์ ๋๋ ํ ๋ฆฌ "="๋ก ์์ํ๋ฉด "="๊ฐ ์์คํ ๋ฃจํธ ์ ๋์ฌ,
์ ์ํด ์ ์ด --sysroot ์ต์ ๋๋ ๋ง์ปค๊ฐ ๊ตฌ์ฑ๋ ๋ ์ง์ ๋ฉ๋๋ค.
๊ฒ์๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก ์ธํธ(๋ค์์ผ๋ก ์ง์ ๋์ง ์์) -L)์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์๋ฎฌ๋ ์ด์ ๋ชจ๋ ld ์ฌ์ฉ ์ค์ด๋ฉฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๊ตฌ์ฑ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ค๋ช ํฉ๋๋ค.
"SEARCH_DIR" ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋งํฌ ์คํฌ๋ฆฝํธ์์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์๋ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ๋ ๋ง์ปค ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ์ง์ ์์ ๊ฒ์๋ฉ๋๋ค.
๋ช ๋ น์ค์ ๋ํ๋ฉ๋๋ค.
-m ์๋ฎฌ๋ ์ด์
์๋ฎฌ๋ ์ดํธ ์๋ฎฌ๋ ์ด์ ๋ง์ปค. ๋ค์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฎฌ๋ ์ด์ ์ ๋์ดํ ์ ์์ต๋๋ค.
--๋ง ์๊ฐ ๋ง์ or -V ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
๊ฒฝ์ฐ -m ์ต์ ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด "LDEMULATION"์์ ์๋ฎฌ๋ ์ด์ ์ ๊ฐ์ ธ์ต๋๋ค.
์ ์๋ ๊ฒฝ์ฐ ํ๊ฒฝ ๋ณ์์ ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์๋ฎฌ๋ ์ด์ ์ ๋ง์ปค๊ฐ ๊ตฌ์ฑ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
-M
--์ธ์-์ง๋
ํ์ค ์ถ๋ ฅ์ ๋ํ ๋งํฌ ๋งต์ ์ธ์ํฉ๋๋ค. ๋งํฌ ๋งต์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ค์์ ํฌํจํ ๋งํฌ:
ยท ๊ฐ์ฒด ํ์ผ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋งคํ๋๋ ์์น.
ยท ๊ณตํต ๊ธฐํธ๊ฐ ํ ๋น๋๋ ๋ฐฉ๋ฒ.
ยท ๋งํฌ์ ํฌํจ๋ ๋ชจ๋ ์์นด์ด๋ธ ๊ตฌ์ฑ์๊ณผ ๋ค์ ๊ธฐํธ์ ๋ํ ์ธ๊ธ
์์นด์ด๋ธ ๋ฉค๋ฒ๋ฅผ ๋ถ๋ฌ๋ค์์ต๋๋ค.
ยท ๊ธฐํธ์ ํ ๋น๋ ๊ฐ.
์ฃผ - ๊ฐ์ด ๋ค์์ ํฌํจํ๋ ํํ์์ ์ํด ๊ณ์ฐ๋๋ ๊ธฐํธ
๋์ผํ ๊ธฐํธ์ ์ด์ ๊ฐ์ ๋ํ ์ฐธ์กฐ๋ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ ์๋ ์ ์์ต๋๋ค.
๋งํฌ ๋งต์ ํ์๋ฉ๋๋ค. ๋ง์ปค๊ฐ ์ค๊ฐ์ ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฒฐ๊ณผ ๋ฐ ํํ์์ ์ต์ข ๊ฐ๋ง ์ ์งํฉ๋๋ค. ๊ทธ๋ฌํ ์๋
์ํฉ์ ๋ฐ๋ผ ๋ง์ปค๋ ๋๊ดํธ๋ก ๋ฌถ์ธ ์ต์ข ๊ฐ์ ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ๋ค์์ ํฌํจํ๋ ๋ง์ปค ์คํฌ๋ฆฝํธ:
ํธ = 1
ํธ = ํธ * 4
ํธ = ํธ + 8
๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ๋งํฌ ๋งต์ ์์ฑ๋ฉ๋๋ค. -M ์ต์ ์ด ์ฌ์ฉ๋ฉ๋๋ค:
0x00000001 ํธ = 0x1
[0x0000000c] ํธ = (ํธ * 0x4)
[0x0000000c] ํธ = (ํธ + 0x8)
์ ๋ง์ปค ์คํฌ๋ฆฝํธ์ ํํ์์ ๋ํ ์์ธํ ๋ด์ฉ์
-n
--nmagic
์น์ ์ ํ์ด์ง ์ ๋ ฌ์ ๋๊ณ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ๋ฅผ ๋นํ์ฑํํ์ญ์์ค. ๋ง์ฝ์
์ถ๋ ฅ ํ์์ Unix ์คํ์ผ์ ๋งค์ง ๋๋ฒ๋ฅผ ์ง์ํ๋ฉฐ ์ถ๋ ฅ์ "NMAGIC"์ผ๋ก ํ์ํฉ๋๋ค.
-N
--์ค๋งค์ง
ํ ์คํธ ๋ฐ ๋ฐ์ดํฐ ์น์ ์ ์ฝ๊ณ ์ธ ์ ์๋๋ก ์ค์ ํฉ๋๋ค. ๋ํ ํ์ด์ง ์ ๋ ฌ์ ํ์ง ๋ง์ญ์์ค.
๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ๊ฑฐํ๊ณ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ๋ฅผ ๋นํ์ฑํํฉ๋๋ค. ์ถ๋ ฅ ํ์์ธ ๊ฒฝ์ฐ
Unix ์คํ์ผ์ ๋งค์ง ๋๋ฒ๋ฅผ ์ง์ํ๊ณ ์ถ๋ ฅ์ "OMAGIC"์ผ๋ก ํ์ํฉ๋๋ค. ์ฐธ๊ณ : ๋น๋ก
์ฐ๊ธฐ ๊ฐ๋ฅํ ํ ์คํธ ์น์ ์ PE-COFF ๋์์ ๋ํด ํ์ฉ๋์ง๋ง
Microsoft์์ ๊ฒ์ํ ํ์ ์ฌ์.
--๋ง๋ฒ์ด ์๋
์ด ์ต์ ์ ๋๋ถ๋ถ์ ํจ๊ณผ๋ฅผ ๋ฌดํจํํฉ๋๋ค. -N ์ต์ . ํ ์คํธ ์น์ ์ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ์ด๊ณ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ๊ฐ ํ์ด์ง ์ ๋ ฌ๋๋๋ก ๊ฐ์ ํฉ๋๋ค. ์ฐธ๊ณ - ์ด ์ต์ ์
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ๋ฅผ ํ์ฑํํ์ง ๋ง์ญ์์ค. ์ฌ์ฉํ๋ค -๋น๋ค์ด๋๋ฏน ์ดํฉ๋๋ค.
-o ์ถ๋ ฅ
--์ถ๋ ฅ=์ถ๋ ฅ
์ถ๋ ฅ ์์ ๋ง๋ ํ๋ก๊ทธ๋จ์ ์ด๋ฆ์ผ๋ก ld; ์ด ์ต์ ์ด ์์ผ๋ฉด
์ง์ ๋, ์ด๋ฆ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ ๋ช ๋ น "OUTPUT"๋ ๊ฐ๋ฅํฉ๋๋ค.
์ถ๋ ฅ ํ์ผ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
-O ์ํ
If ์ํ XNUMX๋ณด๋ค ํฐ ์ซ์ ๊ฐ์ ๋๋ค. ld ์ถ๋ ฅ์ ์ต์ ํํฉ๋๋ค. ์ด๊ฑด ์๋ง๋
ํจ์ฌ ๋ ์ค๋ ๊ฑธ๋ฆฌ๋ฏ๋ก ์๋ง๋ ์ต์ข
๋ฐ์ด๋๋ฆฌ. ํ์ฌ ์ด ์ต์ ์ ELF ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ์๋ง ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋ฏธ๋
๋ง์ปค ๋ฆด๋ฆฌ์ค์์๋ ์ด ์ต์ ์ ๋ ๋ง์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ํ์ฌ๋ ์๋ค.
์ด ์ต์ ์ XNUMX์ด ์๋ ๋ค๋ฅธ ๊ฐ์ ๋ํ ๋ง์ปค ๋์์ ์ฐจ์ด.
๋ค์ ๋งํ์ง๋ง ์ด๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
--ํธ์ ์ํ
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --ํธ์ ์ํ ์ ์ดํ๋ ํ๋๊ทธ์ ํ์ฌ ์ํ๋ฅผ ๋ณด์กดํ ์ ์์ต๋๋ค.
ํ๋์ ํด๋น ํ์ผ๋ก ๋ชจ๋ ๋ณต์ํ ์ ์๋๋ก ์ ๋ ฅ ํ์ผ ์ฒ๋ฆฌ
--ํ ์ํ ์ต์ ์ ์ ํํฉ๋๋ค.
์ ์ฉ๋๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -๋น๋ค์ด๋๋ฏน, -๋น์ ์ , -NS, -๋, -ํตํ_๊ณต์ ,
-๋น๊ณต์ , -๊ณต์ , -N, -n, --์ ์ฒด ์์นด์ด๋ธ, --์ ์ฒด ์์นด์ด๋ธ ์์, -r, -์ฐ๋ฅด,
--copy-dt-ํ์ํ ํญ๋ชฉ, --no-copy-dt-ํ์ํ ํญ๋ชฉ, --ํ์์ ๋ฐ๋ผ, --ํ์์ ๋ฐ๋ผ ์์,
and -a.
์ด ์ต์ ์ ํ ๋์์ ๋ค์ ์ฌ์์ ๋๋ค. ํจํค์ง ๊ตฌ์ฑ. ์ ํจ๊ป ์ฌ์ฉํ ๋
--libs ์ต์ ๊ฐ๋ฅํ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ด๋๊ณ ๋ค์๊ณผ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
ํญ์. ๋ค์๊ณผ ๊ฐ์ด ๋ฐํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
-Wl,--push-state,--ํ์์ ๋ฐ๋ผ -libone -libtwo -Wl,--pop-state
--push-state์ ํจ๊ณผ๋ฅผ ์ทจ์ํ๊ณ ํ๋๊ทธ๋ฅผ ์ ์ดํ๋ โโ์ด์ ๊ฐ์ ๋ณต์ํฉ๋๋ค.
์ ๋ ฅ ํ์ผ ์ฒ๋ฆฌ.
-q
--๋ฐฉ์ถ ์ฌ๋ฐฐ์น
์์ ํ ์ฐ๊ฒฐ๋ ์คํ ํ์ผ์ ์ฌ๋ฐฐ์น ์น์ ๊ณผ ์ฝํ ์ธ ๋ฅผ ๋จ๊ฒจ๋ก๋๋ค. ๊ฒ์๋ฌผ ๋งํฌ
๋ถ์ ๋ฐ ์ต์ ํ ๋๊ตฌ๋ ์ฌ๋ฐ๋ฅธ ์์ ์ ์ํํ๊ธฐ ์ํด ์ด ์ ๋ณด๊ฐ ํ์ํ ์ ์์ต๋๋ค.
์คํ ํ์ผ ์์ . ๊ทธ ๊ฒฐ๊ณผ ๋ ํฐ ์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
์ด ์ต์ ์ ํ์ฌ ELF ํ๋ซํผ์์๋ง ์ง์๋ฉ๋๋ค.
--ํ-๋์
์ถ๋ ฅ ํ์ผ์ ๋์ ์น์ ์ด ์์ด์ผ ํฉ๋๋ค. ์ด ์ต์ ์ VxWorks์๋ง ํด๋น๋ฉ๋๋ค.
๋ชฉํ.
-r
-- ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ์ถ๋ ฅ ์์ฑ ---์ฆ, ์ฐจ๋ก๋ก ๋ค์ ์ญํ ์ ํ ์ ์๋ ์ถ๋ ฅ ํ์ผ์ ์์ฑํฉ๋๋ค.
์ ์ ๋ ฅ ld. ์ด๊ฒ์ ํํ ์ผ๋ถ์ ์ฐ๊ฒฐ. ๋ถ์์ฉ์ผ๋ก ํ๊ฒฝ์์
ํ์ค Unix ๋งค์ง ๋๋ฒ๋ฅผ ์ง์ํ๋ ์ด ์ต์ ์ ์ถ๋ ฅ ํ์ผ์
"OMAGIC"์ ๋งค์ง ๋๋ฒ. ์ด ์ต์ ์ ์ง์ ํ์ง ์์ผ๋ฉด ์ ๋ ํ์ผ์
์์ฐ. C++ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ ๋ ์ด ์ต์ ์ ์์ง ์ง์ ์ ๋ํ ์ฐธ์กฐ ํด๊ฒฐ
์์ฑ์; ๊ทธ๋ ๊ฒํ๋ ค๋ฉด ์ฌ์ฉ -์ฐ๋ฅด.
์ ๋ ฅ ํ์ผ์ด ์ถ๋ ฅ ํ์ผ๊ณผ ๋์ผํ ํ์์ด ์๋ ๊ฒฝ์ฐ ๋ถ๋ถ ๋งํฌ
ํด๋น ์ ๋ ฅ ํ์ผ์ ์ฌ๋ฐฐ์น๊ฐ ํฌํจ๋์ง ์์ ๊ฒฝ์ฐ์๋ง ์ง์๋ฉ๋๋ค. ๋ค๋ฅธ
์ถ๋ ฅ ํ์์๋ ์ถ๊ฐ ์ ํ์ด ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ถ "a.out" ๊ธฐ๋ฐ ํ์
๋ค๋ฅธ ํ์์ ์ ๋ ฅ ํ์ผ๊ณผ์ ๋ถ๋ถ ๋งํฌ๋ฅผ ์ ํ ์ง์ํ์ง ์์ต๋๋ค.
์ด ์ต์ ์ ๋ค์๊ณผ ๋์ผํ ์์ ์ ์ํํฉ๋๋ค. -i.
-R ํ์ผ ์ด๋ฆ
--๊ทธ๋ฅ ๊ธฐํธ=ํ์ผ ์ด๋ฆ
๋ค์์์ ๊ธฐํธ ์ด๋ฆ๊ณผ ์ฃผ์ ์ฝ๊ธฐ ํ์ผ ์ด๋ฆ, ๊ทธ๋ฌ๋ ์์น๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ํฌํจํ์ง ๋ง์ญ์์ค.
์ถ๋ ฅ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ถ๋ ฅ ํ์ผ์ด ์ ๋๊ฐ์ ์์ง์ ์ผ๋ก ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์น ์ด ์ต์ ์ ๋ค์๋ณด๋ค ๋ ๋ง์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ผ๋จ.
๋ค๋ฅธ ELF ๋ง์ปค์์ ํธํ์ฑ์ ์ํด -R ์ต์ ๋ค์ ๋๋ ํ ๋ฆฌ๊ฐ ์ต๋๋ค
ํ์ผ ์ด๋ฆ์ด ์๋ ์ด๋ฆ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. -rpath ์ต์ ์ ์ ํํฉ๋๋ค.
-s
-๋ชจ๋ ์คํธ๋ฆฝ
์ถ๋ ฅ ํ์ผ์์ ๋ชจ๋ ๊ธฐํธ ์ ๋ณด๋ฅผ ์๋ตํฉ๋๋ค.
-S
--์คํธ๋ฆฝ-๋๋ฒ๊ทธ
์ถ๋ ฅ ํ์ผ์์ ๋๋ฒ๊ฑฐ ๊ธฐํธ ์ ๋ณด๋ฅผ ์๋ตํฉ๋๋ค(๋ชจ๋ ๊ธฐํธ๋ ์๋).
-t
--์ถ์ ํ๋ค
์ ๋ ฅ ํ์ผ์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์ธ์ํ์ญ์์ค. ld ์ฒ๋ฆฌํฉ๋๋ค.
-T ์คํฌ๋ฆฝํธ ํ์ผ
--์คํฌ๋ฆฝํธ=์คํฌ๋ฆฝํธ ํ์ผ
์คํฌ๋ฆฝํธ ํ์ผ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ก. ์ด ์คํฌ๋ฆฝํธ๋ ๋ค์์ ๋์ฒดํฉ๋๋ค. ld์ ๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ
(์ถ๊ฐํ๋ ๋์ ), ๊ทธ๋์ ๋ช ๋ น ํ์ผ ์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ง์ ํด์ผ ํฉ๋๋ค.
์ถ๋ ฅ ํ์ผ์ ์ค๋ช ํฉ๋๋ค. ๋ง์ฝ์ ์คํฌ๋ฆฝํธ ํ์ผ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์กด์ฌํ์ง ์์ต๋๋ค.
"ld"๋ ์ด์ ์ ์ง์ ๋ ๋๋ ํ ๋ฆฌ์์ ์ฐพ์ต๋๋ค. -L ์ต์ . ๋ค์์
-T ์ต์ ์ด ๋์ ๋ฉ๋๋ค.
-dT ์คํฌ๋ฆฝํธ ํ์ผ
--๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ=์คํฌ๋ฆฝํธ ํ์ผ
์คํฌ๋ฆฝํธ ํ์ผ ๊ธฐ๋ณธ ๋ง์ปค ์คํฌ๋ฆฝํธ๋ก.
์ด ์ต์ ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค. --์คํฌ๋ฆฝํธ ์คํฌ๋ฆฝํธ ์ฒ๋ฆฌ๊ฐ
๋๋จธ์ง ๋ช ๋ น์ค์ด ์ฒ๋ฆฌ๋ ๋๊น์ง ์ง์ฐ๋ฉ๋๋ค. ์ด๊ฒ์ ํ์ฉ
๋ค์ ๋ฐฐ์น๋ ์ต์ --๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ ์ํฅ์ ๋ฏธ์น๋ ๋ช ๋ น์ค์ ์ต์
๋ง์ปค ๋ช ๋ น์ค์์ ์ค์ํ ์ ์๋ ๋ง์ปค ์คํฌ๋ฆฝํธ์ ๋์
์ฌ์ฉ์๊ฐ ์ง์ ์ ์ดํ ์ ์์ต๋๋ค. (์: ๋ช ๋ น์ค์ด
๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ก ๊ตฌ์ฑ GCC).
-u ์์ง
--์ ์๋์ง ์์=์์ง
ํ ์์ง ์ ์๋์ง ์์ ๊ธฐํธ๋ก ์ถ๋ ฅ ํ์ผ์ ์ ๋ ฅ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด,
์๋ฅผ ๋ค์ด, ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ถ๊ฐ ๋ชจ๋์ ๋งํฌ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. -u ์
์ ์๋์ง ์์ ์ถ๊ฐ ๊ธฐํธ๋ฅผ ์ ๋ ฅํ๊ธฐ ์ํด ๋ค๋ฅธ ์ต์ ์ธ์๋ก ๋ฐ๋ณต๋ฉ๋๋ค. ์ด๊ฒ
์ต์ ์ "EXTERN" ๋ง์ปค ์คํฌ๋ฆฝํธ ๋ช ๋ น๊ณผ ๋์ผํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ๋ชจ๋์ ๋งํฌ๋ก ๊ฐ์ ๋ก ๋์ด์ค๋ ๊ฒฝ์ฐ,
๊ธฐํธ๊ฐ ์ ์๋์ง ์์ ์ํ๋ก ์ ์ง๋๋ ๊ฒ์ด ์ค๋ฅ์ธ ๊ฒฝ์ฐ ์ต์
--ํ์ ์ ์ ๋์ ์ฌ์ฉํด์ผํฉ๋๋ค.
--require ์ ์=์์ง
์ ์๊ตฌํ๋ค ์์ง ์ถ๋ ฅ ํ์ผ์ ์ ์๋์ด ์์ต๋๋ค. ์ด ์ต์ ์ ์ต์ ๊ณผ ๋์ผํฉ๋๋ค.
--์ฐพ์ผ์๋ ์ฃผ์๊ฐ ์์ต๋๋ค ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ์์ง ์ถ๋ ฅ ํ์ผ์ ์ ์๋์ง ์์ ๊ฒฝ์ฐ ๋ง์ปค
์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์ข ๋ฃ๋ฉ๋๋ค. ๋ง์ปค ์คํฌ๋ฆฝํธ์์ ๋์ผํ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
"EXTERN", "ASSERT" ๋ฐ "DEFINED"๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค. ์ด ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ๊ฐ ๊ธฐํธ๊ฐ ํ์ํ ์๊ฐ.
-์ฐ๋ฅด C++ ํ๋ก๊ทธ๋จ ์ด์ธ์ ๋ชจ๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. -r: ์์ฑํ๋ค
์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ์ถ๋ ฅ --- ์ฆ, ์ฐจ๋ก๋ก ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ ์ถ๋ ฅ ํ์ผ ld. ์ธ์
C++ ํ๋ก๊ทธ๋จ ์ฐ๊ฒฐ, -์ฐ๋ฅด ํ์ง ์์ฑ์์ ๋ํ ์ฐธ์กฐ๋ฅผ ํ์ธํ๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ -r. ๊ทธ๋ ์ต๋๋ค
์ฌ์ฉํ์ง ์๋๋ค -์ฐ๋ฅด ์์ ๊ณผ ์ฐ๊ฒฐ๋ ํ์ผ์ -์ฐ๋ฅด; ํ ๋ฒ
์์ฑ์ ํ ์ด๋ธ์ด ๋น๋๋์์ผ๋ฏ๋ก ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ฌ์ฉํ๋ค -์ฐ๋ฅด ๋ง์ง๋ง์ผ๋ก๋ง
๋ถ๋ถ ๋งํฌ ๋ฐ -r ๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด.
--๊ณ ์ ์ฒ๋ฆฌ=๋ชจ๋
๊ณ ์ ์น์ ์ด ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค. ๊ณ ์ ์น์ ์ ๊ตฌ์ฒด์ ์ด์ง ์์ ์น์ ์ ๋๋ค.
๋ง์ปค ์คํฌ๋ฆฝํธ์ ์ธ๊ธ๋์ด ์์ต๋๋ค.
๋ชจ๋ ๋ค์ ๊ฐ ์ค ํ๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
"์ฅ์"
๊ณ ์ ์น์ ์ ์ ๋ต์ ๋ฐ๋ผ ์ ์ ํ ์ถ๋ ฅ ์น์ ์ ๋ฐฐ์น๋ฉ๋๋ค.
์ ์ค๋ช ๊ณ ์ ์น์ . ์ต์ --๊ณ ์ ํ ๋ํ ์น์ ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๋ฐฐ์น.
"๋ฒ๋ฆฌ๋ค"
๋ชจ๋ ๊ณ ์ ์น์ ์ ์ญ์ ๋ฉ๋๋ค. /๋ฒ๋ฆฌ๋ค/ ์๋ด
"๊ฒฝ๊ณ ํ๋ค"
๋ง์ปค๋ "place"์ ๋ํด ๊ณ ์ ์น์ ์ ๋ฐฐ์นํ๊ณ ๊ฒฝ๊ณ ๋ ๋ฐํํฉ๋๋ค.
"์ค๋ฅ"
๋ง์ปค๋ ๊ณ ์ ์น์ ์ด ๋ฐ๊ฒฌ๋๋ฉด ์ค๋ฅ์ ํจ๊ป ์ข ๋ฃ๋ฉ๋๋ค.
๊ธฐ๋ณธ๊ฐ์ธ ๊ฒฝ์ฐ --๊ณ ์ ์ฒ๋ฆฌ "์ฅ์"๊ฐ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
--๊ณ ์ [=์ ]
์ผ์นํ๋ ๋ชจ๋ ์ ๋ ฅ ์น์ ์ ๋ํด ๋ณ๋์ ์ถ๋ ฅ ์น์ ์ ๋ง๋ญ๋๋ค. ์ , ๋๋
์ ํ์ ์์ผ๋ ์นด๋ ์ ๋ชจ๋ ๊ณ ์ ์ ๋ ฅ ์น์ ์ ๋ํด ์ธ์๊ฐ ๋๋ฝ๋์์ต๋๋ค. NS
๊ณ ์ ์น์ ์ ๋ง์ปค ์คํฌ๋ฆฝํธ์์ ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธ๋์ง ์์ ์น์ ์ ๋๋ค. ๋น์ ์ ์ด๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
๋ช ๋ น์ค์์ ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํฉ๋๋ค. ์ ๋ ฅ์ ์ ์์ ์ธ ๋ณํฉ์ ๋ฐฉ์งํฉ๋๋ค.
๋ง์ปค ์คํฌ๋ฆฝํธ์์ ์ถ๋ ฅ ์น์ ํ ๋น์ ์ฌ์ ์ํ๋ ๋์ผํ ์ด๋ฆ์ ์น์ .
-v
--๋ฒ์ญ
-V ์ ๋ํ ๋ฒ์ ๋ฒํธ ํ์ ld. ๊ทธ๋งํผ -V ์ต์ ์ ์ง์๋๋ ์๋ฎฌ๋ ์ด์ ๋ ๋์ดํฉ๋๋ค.
-x
--๋ชจ๋ ์ญ์
๋ชจ๋ ๋ก์ปฌ ๊ธฐํธ๋ฅผ ์ญ์ ํฉ๋๋ค.
-X
--discard-locals
๋ชจ๋ ์์ ๋ก์ปฌ ๊ธฐํธ๋ฅผ ์ญ์ ํฉ๋๋ค. (์ด๋ฌํ ๊ธฐํธ๋ ์์คํ ๋ณ ๋ก์ปฌ๋ก ์์ํฉ๋๋ค.
๋ ์ด๋ธ ์ ๋์ฌ, ์ผ๋ฐ์ ์ผ๋ก .L ELF ์์คํ ๋๋ L ์ ํต์ ์ธ.out ์์คํ ์ ๊ฒฝ์ฐ.)
-y ์์ง
--์ถ์ ๊ธฐํธ=์์ง
์ฐ๊ฒฐ๋ ๊ฐ ํ์ผ์ ์ด๋ฆ์ ์ธ์ํ์ญ์์ค. ์์ง ๋ํ๋ฉ๋๋ค. ์ด ์ต์ ์ด ์ฃผ์ด์ง ์ ์์ต๋๋ค
๋ช ๋ฒ์ด๋ . ๋ง์ ์์คํ ์์ ๋ฐ์ค์ ์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์ด ์ต์ ์ ๋งํฌ์ ์ ์๋์ง ์์ ๊ธฐํธ๊ฐ ์์ง๋ง ์ ์ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
์ฐธ์กฐ์ ์ถ์ฒ.
-Y ํต๋ก
์ถ๊ฐ ํต๋ก ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๊ฒฝ๋ก๋ก ์ด๋ํฉ๋๋ค. ์ด ์ต์ ์ Solaris์ฉ์ผ๋ก ์กด์ฌํฉ๋๋ค.
ํธํ์ฑ.
-z ํค์๋๋
์ธ์๋ ํค์๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝค๋ธ๋ก
์ฌ๋ฌ reloc ์น์ ์ ๊ฒฐํฉํ๊ณ ์ ๋ ฌํ์ฌ ๋์ ๊ธฐํธ ์กฐํ๋ฅผ ๋ง๋ญ๋๋ค.
์บ์ฑ ๊ฐ๋ฅ.
๋ฐํ
๊ฐ์ฒด ํ์ผ์์ ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ๊ณต์ ์ ์ ์๋์ง ์์ ๊ธฐํธ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ ํ ํ์ฉ๋ฉ๋๋ค.
์คํ ์คํ
๊ฐ์ฒด๋ฅผ ์คํ ๊ฐ๋ฅํ ์คํ์ด ํ์ํ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค.
๊ธ๋ก๋ฒ
์ด ์ต์ ์ ๊ณต์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ถํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋ง๋ ๋ค
์ฌ๋ณผ ํด์์ ์ฌ์ฉํ ์ ์๋ ์ด ๊ณต์ ๊ฐ์ฒด์ ์ํด ์ ์๋ ์ฌ๋ณผ
์ดํ์ ๋ก๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
์ด๊ธฐํ
์ด ์ต์ ์ ๊ณต์ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ถํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋์์ ํ์ํฉ๋๋ค
๋ฐํ์ ์ด๊ธฐํ๊ฐ ์ ๋ฐํ์ ์ด๊ธฐํ ์ ์ ๋ฐ์ํ๋๋ก
๋์์ ํ๋ก์ธ์ค์ ๊ฐ์ ธ์จ ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ฒด. ๋ง์ฐฌ๊ฐ์ง๋ก
๊ฐ์ฒด์ ๋ฐํ์ ์ข ๋ฃ๋ ์ ๋ฐํ์ ์ข ๋ฃ ํ์ ๋ฐ์ํฉ๋๋ค.
๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ฒด.
๋ผ์ด๋ค๋ค
์ฌ๋ณผ ํ ์ด๋ธ์ด ๋ชจ๋ ์ฌ๋ณผ ์์ ์ฝ์ ๋๋ ๊ฐ์ฒด๋ฅผ ํ์ํ์ง๋ง
๊ธฐ๋ณธ ์คํ ํ์ผ.
๊ฒ์ผ๋ฅธ
์คํ ํ์ผ ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ ๋ ํ์ํ์ฌ ๋์
ํจ์ ํธ์ถ ํ์ธ์ ํจ์๊ฐ ํธ์ถ๋ ๋๊น์ง ์ง์ฐ์ํค๋ ๋ง์ปค
(์ง์ฐ ๋ฐ์ธ๋ฉ), ๋ก๋ ์๊ฐ์ด ์๋๋๋ค. ์ง์ฐ ๋ฐ์ธ๋ฉ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๋ก๋ํ๋ซ
ํด๋น ํํฐ๊ฐ ๋ฐํ์์ ์ฆ์ ์ฒ๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ํ์ํฉ๋๋ค.
๋ฌผ ๋ฐํ
๋ค์ค ์ ์๋ฅผ ํ์ฉํฉ๋๋ค.
๋ ธ์ฝค๋ธ๋ก
์ฌ๋ฌ reloc ์น์ ๊ฒฐํฉ์ ๋นํ์ฑํํฉ๋๋ค.
nocopyreloc
์ ์ ์๋ ๋ณ์ ๋์ ์ฌ์ฉ๋๋ ๋ง์ปค ์์ฑ .dynbss ๋ณ์ ๋นํ์ฑํ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ๋์ ํ ์คํธ ์ฌ๋ฐฐ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ ธ๋ํดํธ๋ฆฝ
์ด ๊ฐ์ฒด์ ์ข ์์ฑ์ ๊ฒ์ํ ๋ ๋ฌด์ํ ๊ฐ์ฒด๋ฅผ ํ์ํฉ๋๋ค.
๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๊ฒฝ๋ก.
๋ ธ๋ ์ญ์
๋ฐํ์์ ๊ฐ์ฒด๋ฅผ ์ธ๋ก๋ํด์๋ ์ ๋๋ค๊ณ ํ์ํฉ๋๋ค.
๋ ธ๋๋กํ
"dlopen"์ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ํ์ํฉ๋๋ค.
๊ฒฐ์
"dldump"๋ก ๊ฐ์ฒด๋ฅผ ๋คํํ ์ ์์์ ํ์ํฉ๋๋ค.
๋ ธ์ด์ ์คํ
๊ฐ์ฒด๋ฅผ ์คํ ๊ฐ๋ฅํ ์คํ์ด ํ์ํ์ง ์์ ๊ฒ์ผ๋ก ํ์ํฉ๋๋ค.
๋ณธ๋ฌธ
๊ณต์ ๊ฐ์ฒด์ DT_TEXTREL์ ์ค๋ฅ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋ ธํ ์คํธ
๊ณต์ ๊ฐ์ฒด์ DT_TEXTREL์ ์ค๋ฅ๋ก ์ทจ๊ธํ์ง ๋ง์ญ์์ค.
ํ ์คํธ ์คํ
๊ณต์ ๊ฐ์ฒด์ DT_TEXTREL์ ์ค๋ฅ๋ก ์ทจ๊ธํ์ง ๋ง์ญ์์ค.
๋ ธ๋ ๋ก
๊ฐ์ฒด์ ELF "PT_GNU_RELRO" ์ธ๊ทธ๋จผํธ ํค๋๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค.
์ง๊ธ ์คํ ํ์ผ ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ ๋ ํ์ํ์ฌ ๋์
ํ๋ก๊ทธ๋จ์ด ์์๋๊ฑฐ๋ ๊ณต์ ๋ ๋ ๋ชจ๋ ๊ธฐํธ๋ฅผ ํด๊ฒฐํ๋ ๋ง์ปค
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํจ์ ํธ์ถ ํ์ธ์ ์ฐ๊ธฐํ๋ ๋์ dlopen์ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ๋ฉ๋๋ค.
ํจ์๊ฐ ์ฒ์ ํธ์ถ๋๋ ์์ ๊น์ง.
์ถ๋ฐ์ง
๊ฐ์ฒด์ $ORIGIN์ด ํฌํจ๋ ์ ์์์ ํ์ํฉ๋๋ค.
๋ ๋ก
๊ฐ์ฒด์ ELF "PT_GNU_RELRO" ์ธ๊ทธ๋จผํธ ํค๋๋ฅผ ๋ง๋ญ๋๋ค.
์ต๋ ํ์ด์ง ํฌ๊ธฐ=๊ฐ์น
์๋ฎฌ๋ ์ด์ ์ต๋ ํ์ด์ง ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ๊ฐ์น.
๊ณตํต ํ์ด์ง ํฌ๊ธฐ=๊ฐ์น
์๋ฎฌ๋ ์ด์ ๊ณตํต ํ์ด์ง ํฌ๊ธฐ๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ๊ฐ์น.
์คํ ํฌ๊ธฐ =๊ฐ์น
ELF "PT_GNU_STACK" ์ธ๊ทธ๋จผํธ์ ๋ํ ์คํ ํฌ๊ธฐ๋ฅผ ์ง์ ํฉ๋๋ค. XNUMX์ ์ง์ ํ๋ฉด
XNUMX์ด ์๋ ํฌ๊ธฐ์ ๊ธฐ๋ณธ "PT_GNU_STACK" ์ธ๊ทธ๋จผํธ ์์ฑ์ ์ฌ์ ์ํฉ๋๋ค.
bndplt
ํญ์ PLT ํญ๋ชฉ์ BND ์ ๋์ฌ๋ฅผ ์์ฑํ์ญ์์ค. Linux/x86_64์์ ์ง์๋ฉ๋๋ค.
noextern ๋ณดํธ ๋ฐ์ดํฐ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ๋ ๋ณดํธ๋ ๋ฐ์ดํฐ ๊ธฐํธ๋ฅผ ์ธ๋ถ๋ก ์ทจ๊ธํ์ง ๋ง์ญ์์ค. ์ด๊ฒ
์ต์ ์ ๋ง์ปค ๋ฐฑ์๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํฉ๋๋ค. ์๋ชป๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ปดํ์ผ๋ฌ์ ์ํด ์์ฑ๋ ๋ณดํธ๋ ๋ฐ์ดํฐ ๊ธฐํธ์ ๋ํ ์ฌ๋ฐฐ์น. ์ ๋ฐ์ดํธ
๋ค๋ฅธ ๋ชจ๋์ ์ํด ๋ณดํธ๋ ๋ฐ์ดํฐ ๊ธฐํธ๋ ๊ฒฐ๊ณผ ๊ณต์ ์ ํ์๋์ง ์์ต๋๋ค.
๋์๊ด. i386 ๋ฐ x86-64์์ ์ง์๋ฉ๋๋ค.
call-nop=์ ๋์ฌ-์ถ๊ฐ
call-nop=์ ๋์ฌ-nop
call-nop=์ ๋ฏธ์ฌ-nop
call-nop=์ ๋์ฌ-๋ฐ์ดํธ
call-nop=์ ๋ฏธ์ฌ-๋ฐ์ดํธ
๊ฐ์ ํธ์ถ์ ๋ก์ปฌ๋ก ๋ณํํ ๋ 1๋ฐ์ดํธ "NOP" ํจ๋ฉ์ ์ง์ ํฉ๋๋ค.
GOT ์ฌ๋กฏ์ ํตํด ์ ์๋ ํจ์ foo. call-nop=์ ๋์ฌ-์ถ๊ฐ "0x67" ์์ฑ
ํธ"๋ผ๊ณ ๋ถ๋ฌ. call-nop=์ ๋์ฌ-nop "0x90 ํธ์ถ foo"๋ฅผ ์์ฑํฉ๋๋ค. call-nop=์ ๋ฏธ์ฌ-nop
"call foo 0x90"์ ์์ฑํฉ๋๋ค. call-nop=์ ๋์ฌ-๋ฐ์ดํธ "๋ฅผ ์์ฑํ๋ค๋ฐ์ดํธ ์ ํ ํธ".
call-nop=์ ๋ฏธ์ฌ-๋ฐ์ดํธ "call foo" ์์ฑ ๋ฐ์ดํธ". i386 ๋ฐ x86_64์์ ์ง์๋ฉ๋๋ค.
๋ค๋ฅธ ํค์๋๋ Solaris ํธํ์ฑ์ ์ํด ๋ฌด์๋ฉ๋๋ค.
-( ๊ธฐ๋ก ๋ณด๊ด์ -)
--์์ ๊ทธ๋ฃน ๊ธฐ๋ก ๋ณด๊ด์ --end-๊ทธ๋ฃน
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ ๊ธฐ๋ก ๋ณด๊ด์ ์์นด์ด๋ธ ํ์ผ ๋ชฉ๋ก์ด์ด์ผ ํฉ๋๋ค. ๋ช ์์ ํ์ผ์ผ ์ ์์ต๋๋ค.
์ด๋ฆ, ๋๋ -l ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
์ ์๋์ง ์์ ์ ์ฐธ์กฐ๊ฐ ์์ ๋๊น์ง ์ง์ ๋ ์์นด์ด๋ธ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ฒ์ํฉ๋๋ค.
๋ง๋ค์ด์ง. ์ผ๋ฐ์ ์ผ๋ก ์์นด์ด๋ธ๋ ์ง์ ๋ ์์๋๋ก ํ ๋ฒ๋ง ๊ฒ์๋ฉ๋๋ค.
๋ช ๋ น์ค์์. ์ ์๋์ง ์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํด๋น ์์นด์ด๋ธ์ ๊ธฐํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ
๋์ค์ ๋ช ๋ น์ค์ ๋ํ๋๋ ์์นด์ด๋ธ์ ๊ฐ์ฒด๊ฐ ์ฐธ์กฐํ๋ ๊ธฐํธ,
๋ง์ปค๋ ํด๋น ์ฐธ์กฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์์นด์ด๋ธ๋ฅผ ๊ทธ๋ฃนํํ์ฌ,
๊ฐ๋ฅํ ๋ชจ๋ ์ฐธ์กฐ๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ๋ชจ๋ ๋ฐ๋ณต์ ์ผ๋ก ๊ฒ์๋ฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์๋นํ ์ฑ๋ฅ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค. ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ ์ด์์ ์์นด์ด๋ธ ๊ฐ์ ๋ถ๊ฐํผํ ์ํ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค.
--์๋ฝ-์ ์ ์๋-์ ๋ ฅ-์์น
--no-accept-์ ์ ์๋-์ ๋ ฅ-์์น
์ํคํ ์ฒ๋ฅผ ์ธ์ํ ์ ์๋ ์ ๋ ฅ ํ์ผ์ ํ์ฉํ๋๋ก ๋ง์ปค์ ์ง์ํฉ๋๋ค. NS
์ฌ์ฉ์๊ฐ ์์ ์ด ํ๋ ์ผ์ ์๊ณ ์๋์ ์ผ๋ก ์ฐ๊ฒฐํ๋ ค๋ ๊ฒ์ผ๋ก ๊ฐ์ ํฉ๋๋ค.
์ด๋ฌํ ์ ์ ์๋ ์ ๋ ฅ ํ์ผ์์. ์ด๊ฒ์ ๋ง์ปค์ ๊ธฐ๋ณธ ๋์์ด์์ต๋๋ค.
๋ฆด๋ฆฌ์ค 2.14. ๋ฆด๋ฆฌ์ค 2.14 ์ดํ์ ๊ธฐ๋ณธ ๋์์ ์ด๋ฌํ ์ ๋ ฅ์ ๊ฑฐ๋ถํ๋ ๊ฒ์ ๋๋ค.
ํ์ผ ๋ฑ --์๋ฝ-์ ์ ์๋-์ ๋ ฅ-์์น ์ต์ ์ด ์ด์ ๋ฒ์ ์ ๋ณต์ํ๋ ๋ฐ ์ถ๊ฐ๋์์ต๋๋ค.
ํ๋.
--ํ์์ ๋ฐ๋ผ
--ํ์์ ๋ฐ๋ผ ์์
์ด ์ต์ ์ ๋ช ๋ น์ ์ธ๊ธ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ELF DT_NEEDED ํ๊ทธ์ ์ํฅ์ ์ค๋๋ค.
๋ค์ ์ค --ํ์์ ๋ฐ๋ผ ์ต์ . ์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋ DT_NEEDED ํ๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ช ๋ น์ค์ ์ธ๊ธ๋ ๊ฐ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ค์ ๋ก ํ์ํ๊ฑฐ๋ ํ์ํ์ง ์์ต๋๋ค. --ํ์์ ๋ฐ๋ผ DT_NEEDED ํ๊ทธ๊ฐ ๋ค์์ ๋ํด์๋ง ๋ด๋ณด๋ด์ง๋๋ก ํฉ๋๋ค.
๋์๊ด at ๊ทธ ํฌ์ธํธ in ์ ์, ๋งํฌ ์ฝํ์ง ์์ ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ์ถฉ์กฑํฉ๋๋ค.
์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์์ ์ฐธ์กฐํ๊ฑฐ๋ DT_NEEDED์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ
๋ค๋ฅธ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก, ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฝํ ์ ์๋์ง ์์ ๊ธฐํธ ์ฐธ์กฐ
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค. ๋ช ๋ น์ค์ ๋ํ๋๋ ๊ฐ์ฒด ํ์ผ ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์๊ฐ ๋ด์
๋ฌธ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์์ ๋ฐ๋ผ ํ์๋๋์ง ์ฌ๋ถ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์ด๊ฒ์
์์นด์ด๋ธ์์ ๊ฐ์ฒด ํ์ผ์ ์ถ์ถํ๋ ๊ท์น๊ณผ ์ ์ฌํฉ๋๋ค. --ํ์์ ๋ฐ๋ผ ์์
๊ธฐ๋ณธ ๋์์ ๋ณต์ํฉ๋๋ค.
--์ถ๊ฐ ํ์
--์ถ๊ฐ ํ์ ์์
์ด ๋ ์ต์ ์ ์ด๋ฆ์ ์ ์ฌ์ฑ ๋๋ฌธ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
--ํ์์ ๋ฐ๋ผ and --ํ์์ ๋ฐ๋ผ ์์ ์ต์ . ๊ทธ๋ค์ ๋ค์์ผ๋ก ๋์ฒด๋์์ต๋๋ค
--copy-dt-ํ์ํ ํญ๋ชฉ and --no-copy-dt-ํ์ํ ํญ๋ชฉ.
-์ฃผ์ฅํ๋ค ํค์๋๋
์ด ์ต์ ์ SunOS ํธํ์ฑ์ ์ํด ๋ฌด์๋ฉ๋๋ค.
-๋น๋ค์ด๋๋ฏน
-๋
-ํตํ_๊ณต์
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ. ์ด๊ฒ์ ๊ณต์ ๋ ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์๋ฉ๋๋ค. ์ด ์ต์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ํ๋ซํผ์์ ๊ธฐ๋ณธ๊ฐ์ ๋๋ค. NS
์ด ์ต์ ์ ๋ค๋ฅธ ๋ณํ์ ๋ค์ํ ์์คํ ๊ณผ์ ํธํ์ฑ์ ์ํ ๊ฒ์ ๋๋ค. ๋น์ ์ ํ ์์๋ค
๋ช ๋ น์ค์์ ์ด ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์์ ์ํฅ์ ์ค๋๋ค.
-l ๊ทธ ๋ค๋ฅผ ์๋ ์ต์ .
-B๊ทธ๋ฃน
๋์ ์น์ ์ "DT_FLAGS_1" ํญ๋ชฉ์์ "DF_1_GROUP" ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๊ฒ
๋ฐํ์ ๋ง์ปค๊ฐ ์ด ๊ฐ์ฒด ๋ฐ ํด๋น ์ข ์์ฑ์ ์กฐํ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํฉ๋๋ค.
๊ทธ๋ฃน ๋ด์์๋ง ์ํ๋ฉ๋๋ค. --unresolved-symbols=์ ์ฒด ๋ณด๊ณ ์์๋์ด ์์ต๋๋ค. ์ด๊ฒ
์ต์ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
-๋น์ ์
-NS
-๋น๊ณต์
-๊ณต์
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๋งํฌํ์ง ๋ง์ญ์์ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์๋ฉ๋๋ค. ์ด ์ต์ ์ ๋ค๋ฅธ ๋ณํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ค์ํ ์์คํ ๊ณผ์ ํธํ์ฑ. ์์ ์ด ์ต์ ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์์ ์ํฅ์ ์ค๋๋ค. -l ๊ทธ ๋ค๋ฅผ ์๋ ์ต์ . ์ด๊ฒ
์ต์ ๋ ์๋ฏธํฉ๋๋ค --unresolved-symbols=์ ์ฒด ๋ณด๊ณ . ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
-๊ณต์ . ๊ทธ๋ ๊ฒ ํ๋ฉด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ฑ๋์ง๋ง ๋ชจ๋
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ธ๋ถ ์ฐธ์กฐ๋ ์ ์ ์์ ํญ๋ชฉ์ ๊ฐ์ ธ์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ.
-๋น์ฌ๋ณผ๋ฆญ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ ์ญ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์์ ๋ฐ์ธ๋ฉํฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์์(์๋ ๊ฒฝ์ฐ). ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํ๋ก๊ทธ๋จ์ ๋ํด ๊ฐ๋ฅํฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ ์ ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ์ด๊ฒ
์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์๋ ์์ต๋๋ค. --๋ด๋ณด๋ด๊ธฐ-๋์ ์ต์ , ์์น ์์ฑ ์
์ ์ญ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์์ ๋ฐ์ธ๋ฉํ๋ ๋ ๋ฆฝ ์คํ ํ์ผ
์คํ ํ์ผ. ์ด ์ต์ ์ ๊ณต์ ๋ฅผ ์ง์ํ๋ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์์น ๋ ๋ฆฝ ์คํ ํ์ผ.
-Bsymbolic-ํจ์
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ ์ญ ํจ์ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ๋ฅผ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ ์ ์(์๋ ๊ฒฝ์ฐ). ์ด ์ต์ ์ ๋ค์๊ณผ ํจ๊ป ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
--๋ด๋ณด๋ด๊ธฐ-๋์ ์ต์ , ์์น ๋ ๋ฆฝ ์คํ ํ์ผ์ ๋ง๋ค ๋ ๋ฐ์ธ๋ฉ
์คํ ํ์ผ ๋ด์ ์ ์์ ๋ํ ์ ์ญ ํจ์ ๊ธฐํธ์ ๋ํ ์ฐธ์กฐ. ์ด๊ฒ
์ต์ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์์น๋ฅผ ์ง์ํ๋ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋ ๋ฆฝ ์คํ ํ์ผ.
--๋์ ๋ชฉ๋ก=๋์ ๋ชฉ๋ก ํ์ผ
๋ง์ปค์ ๋์ ๋ชฉ๋ก ํ์ผ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ฐธ์กฐ๊ฐ ์๋ ์ ์ญ ๊ธฐํธ ๋ชฉ๋ก์ ์ง์ ํ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ ์ ์์ ๋ฐ์ธ๋ฉ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ถ๊ฐํด์ผ ํ๋ ๊ธฐํธ ๋ชฉ๋ก์ ์ง์ ํ๊ธฐ ์ํด ๋์ ์ผ๋ก ๋งํฌ๋ ์คํ ํ์ผ
์คํ ํ์ผ์ ๊ธฐํธ ํ ์ด๋ธ ์ด ์ต์ ์ ELF ํ๋ซํผ์์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
๋์ ๋ชฉ๋ก์ ํ์์ ๋ฒ์ ๋ฐ ๋ ธ๋๊ฐ ์๋ ๋ฒ์ ๋ ธ๋์ ๋์ผํฉ๋๋ค.
์ด๋ฆ. ๋ณด๋ค ๋ฒ์
--๋์ ๋ชฉ๋ก ๋ฐ์ดํฐ
๋์ ๋ชฉ๋ก์ ๋ชจ๋ ์ ์ญ ๋ฐ์ดํฐ ๊ธฐํธ๋ฅผ ํฌํจํฉ๋๋ค.
--๋์ ๋ชฉ๋ก-cpp-new
C++ ์ฐ์ฐ์ new ๋ฐ delete์ ๋ํ ๊ธฐ๋ณธ ์ ๊ณต ๋์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค. ์ฃผ๋ก ์ ์ฉํ๋ค
๊ณต์ libstdc++ ๋น๋์ฉ.
--๋์ ๋ชฉ๋ก-cpp-์ ํ ์ ๋ณด
C++ ๋ฐํ์ ์ ํ ์๋ณ์ ์ํ ๊ธฐ๋ณธ ์ ๊ณต ๋์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค.
--์ฒดํฌ ์น์
--์ฒดํฌ ์น์ ์์
๋ง์ปค์๊ฒ ๋ฌป์ต๋๋ค. ์ง์ ์น์ ์ฃผ์๊ฐ ํ ๋น๋ ํ ํ์ธํ๊ธฐ ์ํด
๊ฒน์น๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋ ์ด ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ ๋ฐ๊ฒฌํ๋ฉด
๊ฒน์น๋ฉด ์ ์ ํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์์ฑ๋ฉ๋๋ค. ๋ง์ปค๋ ์ ๋ํด ์๊ณ ์์ผ๋ฉฐ
์ค๋ฒ๋ ์ด์ ์น์ ์ ํ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ ๋์์ ๋ณต์ํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค ์ค์์น๋ฅผ ์ฌ์ฉํ์ฌ --์ฒดํฌ ์น์ . ์น์ ๊ฒน์นจ์ ์ผ๋ฐ์ ์ผ๋ก
์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ๋งํฌ๋ฅผ ํ์ธํ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ก ํ์ธํ ์ ์์ต๋๋ค.
--์ฒดํฌ ์น์ ์ต์ ์ ์ ํํฉ๋๋ค.
--copy-dt-ํ์ํ ํญ๋ชฉ
--no-copy-dt-ํ์ํ ํญ๋ชฉ
์ด ์ต์ ์ DT_NEEDED ํ๊ทธ๊ฐ ์ฐธ์กฐํ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฒ๋ฆฌ์ ์ํฅ์ ์ค๋๋ค.
๋ด๋ถ ๋ช ๋ น์ค์ ์ธ๊ธ๋ ELF ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋
DT_NEEDED ํ๊ทธ์ ์ธ๊ธ๋ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๋ ฅ ๋ฐ์ด๋๋ฆฌ์ DT_NEEDED ํ๊ทธ ์ถ๊ฐ
์ ๋ ฅ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์. ์ ํจ๊ป --copy-dt-ํ์ํ ํญ๋ชฉ ๋ช ๋ น์ ์ง์ ๋
๊ทธ๋ฌ๋ ๊ทธ ๋ค์ ์ค๋ ๋ชจ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ DT_NEEDED ํญ๋ชฉ์ด ์์ต๋๋ค.
์ถ๊ฐํ์ต๋๋ค. ๊ธฐ๋ณธ ๋์์ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ณต์ํ ์ ์์ต๋๋ค. --no-copy-dt-ํ์ํ ํญ๋ชฉ.
์ด ์ต์ ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐํธ ํด์๋์๋ ์ํฅ์ ์ค๋๋ค.
์ --copy-dt-ํ์ํ ํญ๋ชฉ ๋ช ๋ น์ค์ ์ธ๊ธ๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
DT_NEEDED ํ๊ทธ๋ฅผ ๋ฐ๋ผ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ๊ท์ ์ผ๋ก ๊ฒ์๋ฉ๋๋ค.
์ถ๋ ฅ ๋ฐ์ด๋๋ฆฌ์ ํ์ํ ๊ธฐํธ๋ฅผ ํ์ธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ๋ฉด
๋ค์ ์ค๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ค์ง๋ฉ๋๋ค.
๊ทธ ์์ฒด. ๊ธฐํธ๋ฅผ ํ์ธํ๊ธฐ ์ํด DT_NEEDED ๋งํฌ๋ฅผ ํต๊ณผํ์ง ์์ต๋๋ค.
--cref
์ํธ ์ฐธ์กฐ ํ ์ด๋ธ์ ์ถ๋ ฅํฉ๋๋ค. ๋ง์ปค ๋งต ํ์ผ์ด ์์ฑ๋๋ ๊ฒฝ์ฐ ํฌ๋ก์ค
์ฐธ์กฐ ํ ์ด๋ธ์ด ๋งต ํ์ผ์ ์ธ์๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ค์ ์ธ์๋ฉ๋๋ค.
์ถ๋ ฅ.
ํ ์ด๋ธ์ ํ์์ ์๋์ ์ผ๋ก ๋จ์ํ์ฌ ๋ค์์์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํ์ํ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ. ๊ธฐํธ๋ ์ด๋ฆ๋ณ๋ก ์ ๋ ฌ๋์ด ์ธ์๋ฉ๋๋ค. ๊ฐ ๊ธฐํธ์ ๋ํด,
ํ์ผ ์ด๋ฆ ๋ชฉ๋ก์ด ์ ๊ณต๋ฉ๋๋ค. ๊ธฐํธ๊ฐ ์ ์๋ ๊ฒฝ์ฐ ๋์ด๋ ์ฒซ ๋ฒ์งธ ํ์ผ์
์ ์์ ์์น. ๊ธฐํธ๊ฐ ๊ณตํต ๊ฐ์ผ๋ก ์ ์๋๋ฉด ๋ชจ๋ ํ์ผ
์ด๊ฒ์ด ์ผ์ด๋๋ ๊ณณ์ ๋ค์์ ๋ํ๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ธฐํธ๋ฅผ ์ฐธ์กฐํ๋ ๋ชจ๋ ํ์ผ์
๋์ด๋์ด ์์ต๋๋ค.
--no-define-common
์ด ์ต์ ์ ๊ณตํต ๊ธฐํธ์ ๋ํ ์ฃผ์ ํ ๋น์ ๊ธ์งํฉ๋๋ค. ์คํฌ๋ฆฝํธ
"INHIBIT_COMMON_ALLOCATION" ๋ช ๋ น์ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ง๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --no-define-common ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ฃผ์๋ฅผ ํ ๋นํ๋ ๊ฒฐ์ ์ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
์ถ๋ ฅ ํ์ผ ์ ํ ์ ํ์ ๊ณตํต ๊ธฐํธ. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ๋ฐฐ์น ๋ถ๊ฐ๋ฅ
์ถ๋ ฅ ์ ํ์ ๊ณตํต ๊ธฐํธ์ ์ฃผ์๋ฅผ ๊ฐ์ ๋ก ํ ๋นํฉ๋๋ค. ์ฌ์ฉ --no-define-common
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐธ์กฐ๋๋ ๊ณตํต ๊ธฐํธ๋ฅผ ํ ๋นํ ์ ์์ต๋๋ค.
์ฃผ ํ๋ก๊ทธ๋จ์์๋ง ์ฃผ์. ์ด๊ฒ์ ์ฌ์ฉํ์ง ์๋ ์ค๋ณต ๊ณต๊ฐ์ ์ ๊ฑฐํฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ณ ์๋ชป๋ ๋ฌธ์ ํด๊ฒฐ์ ๋ํ ํผ๋์ ๋ฐฉ์งํฉ๋๋ค.
์ ๋ํ ํน์ ๊ฒ์ ๊ฒฝ๋ก๊ฐ ์๋ ๋์ ๋ชจ๋์ด ๋ง์ ๊ฒฝ์ฐ ๋ณต์
๋ฐํ์ ๊ธฐํธ ํด๊ฒฐ.
--defsym=์์ง=ํํ
๋ค์์ผ๋ก ์ฃผ์ด์ง ์ ๋ ์ฃผ์๋ฅผ ํฌํจํ๋ ์ถ๋ ฅ ํ์ผ์ ์ ์ญ ๊ธฐํธ๋ฅผ ๋ง๋ญ๋๋ค.
ํํ. ์ฌ๋ฌ ๋ฒ ์ ์ํ๋ ๋ฐ ํ์ํ ๋งํผ ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ช ๋ น์ค์ ๊ธฐํธ. ์ ํ๋ ํํ์ ์ฐ์ ์ด ์ง์๋ฉ๋๋ค.
ํํ ์ด ๋ฌธ๋งฅ์์: XNUMX์ง์ ์์๋ ์ด๋ฆ์ ์ง์ ํ ์ ์์ต๋๋ค.
๊ธฐ์กด ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ "+" ๋ฐ "-"๋ฅผ ์ฌ์ฉํ์ฌ XNUMX์ง์ ์์๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋
๊ธฐํธ. ๋ ์ ๊ตํ ํํ์ด ํ์ํ๋ฉด ๋ง์ปค ๋ช ๋ น์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์คํฌ๋ฆฝํธ์์ ์ธ์ด. ์ฐธ๊ณ : ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํฉ๋๋ค. ์์งWalk Through California ํ๋ก๊ทธ๋จ,
๋ฑํธ("="), ๊ทธ๋ฆฌ๊ณ ํํ.
--๋์ต๊ธ[=์คํ์ผ]
-- ์ํด ์์
์ด๋ฌํ ์ต์ ์ ์ค๋ฅ ๋ฉ์์ง ๋ฐ ๊ธฐํ
์ฐ์ถ. ๋ง์ปค๊ฐ demangle ๋ช ๋ น์ ๋ฐ์ผ๋ฉด ์ฌ๋ณผ ์ด๋ฆ์
์ฝ์ ์ ์๋ ๋ฐฉ์: ๊ฐ์ฒด ํ์ผ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์ ํ ๋ฐ์ค์ ์ ๊ฑฐํฉ๋๋ค.
ํ์์ ์ง์ ํ๊ณ C++ ๋งน๊ธ๋ง๋ ๊ธฐํธ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ์ฝ์ ์ ์๋ ์ด๋ฆ์ผ๋ก ๋ณํํฉ๋๋ค. ๋ค๋ฅธ
์ปดํ์ผ๋ฌ์๋ ๋ค๋ฅธ ๋งน๊ธ๋ง ์คํ์ผ์ด ์์ต๋๋ค. ์ ํ์ ๋๋ง๊ธ๋ง ์คํ์ผ ์ธ์๋
์ปดํ์ผ๋ฌ์ ์ ํฉํ ๋๋งน๊ธ๋ง ์คํ์ผ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ปค๋
ํ๊ฒฝ ๋ณ์๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก demangle COLLECT_NO_DEMANGLE ์ค์ ๋ฉ๋๋ค. ์ด๊ฒ๋ค
์ต์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ๊ฐ์ ๋ฌด์ํ ์ ์์ต๋๋ค.
-Iํ์ผ
--๋์ ๋ง์ปค=ํ์ผ
๋์ ๋ง์ปค์ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค. ์์ฑํ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ ELF ์คํ ํ์ผ. ๊ธฐ๋ณธ ๋์ ๋ง์ปค๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํํฉ๋๋ค.
๋น์ ์ดํ๊ณ ์๋ ์ผ์ ๋ชจ๋ฅด๋ ํ ์ด๊ฒ์ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
--๋์ ๋ง์ปค ์์
์คํ ํ์ผ์ ์์ฑํ ๋ ์ฌ์ฉํ ๋์ ๋ง์ปค์ ๋ํ ์์ฒญ์ ์๋ตํฉ๋๋ค.
๋ก๋ ์๊ฐ. ์ด๊ฒ์ ๋์ ํ์ผ์ ํฌํจํ๋ ELF ์คํ ํ์ผ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ฌ๋ฐฐ์น ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ ์ง์ ์ ์ฝ๋๊ฐ ํ์ํฉ๋๋ค.
์ฌ๋ฐฐ์น.
--์น๋ช ์ ์ธ ๊ฒฝ๊ณ
--์น๋ช ์ ์ธ ๊ฒฝ๊ณ ์์
๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ์ค๋ฅ๋ก ์ฒ๋ฆฌํ์ญ์์ค. ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ๋์์ ๋ณต์ํ ์ ์์ต๋๋ค.
--์น๋ช ์ ์ธ ๊ฒฝ๊ณ ์์.
--force-exe-์ ๋ฏธ์ฌ
์ถ๋ ฅ ํ์ผ์ .exe ์ ๋ฏธ์ฌ๊ฐ ์๋์ง ํ์ธํ์ญ์์ค.
์ฑ๊ณต์ ์ผ๋ก ๋น๋๋ ์์ ํ ์ฐ๊ฒฐ๋ ์ถ๋ ฅ ํ์ผ์ ".exe" ๋๋ ".dll"์ด ์๋ ๊ฒฝ์ฐ
์ ๋ฏธ์ฌ, ์ด ์ต์ ์ ๋ง์ปค๊ฐ ์ถ๋ ฅ ํ์ผ์ ๋์ผํ ์ด๋ฆ ์ค ํ๋๋ก ๋ณต์ฌํ๋๋ก ํฉ๋๋ค.
".exe" ์ ๋ฏธ์ฌ๊ฐ ์์ต๋๋ค. ์ด ์ต์ ์ ์์ ๋์ง ์์ Unix ๋ฉ์ดํฌํ์ผ์ ์ฌ์ฉํ ๋ ์ ์ฉํฉ๋๋ค.
Microsoft Windows ํธ์คํธ, Windows์ ์ผ๋ถ ๋ฒ์ ์
".exe" ์ ๋ฏธ์ฌ๋ก ๋๋ฉ๋๋ค.
--gc-์น์
--no-gc-์น์
์ฌ์ฉํ์ง ์๋ ์ ๋ ฅ ์น์ ์ ๊ฐ๋น์ง ์์ง์ ํ์ฑํํฉ๋๋ค. ํ๋ ๋์์์๋ ๋ฌด์๋ฉ๋๋ค.
์ด ์ต์ ์ ์ง์ํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ ๋์(์ด ๊ฐ๋น์ง
์ปฌ๋ ์ )์ ์ง์ ํ์ฌ ๋ณต์ํ ์ ์์ต๋๋ค. --no-gc-์น์ ๋ช ๋ น์ค์์. ๋ฉ๋ชจ
COFF ๋ฐ PE ํ์ ๋์์ ๋ํ ๊ฐ๋น์ง ์์ง์ด ์ง์๋์ง๋ง
๊ตฌํ์ ํ์ฌ ์คํ์ ์ธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
--gc-์น์ ๊ธฐํธ๋ฅผ ๊ฒ์ฌํ์ฌ ์ฌ์ฉ๋๋ ์ ๋ ฅ ์น์ ์ ๊ฒฐ์ ํ๊ณ
์ฌ๋ฐฐ์น. ํญ๋ชฉ ๊ธฐํธ๊ฐ ํฌํจ๋ ์น์ ๊ณผ ๋ค์์ ํฌํจํ๋ ๋ชจ๋ ์น์
๋ช ๋ น์ค์ ์ ์๋์ง ์์ ๊ธฐํธ๋ ๋ค์์ ํฌํจํ๋ ์น์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ง๋ฉ๋๋ค.
๋์ ๊ฐ์ฒด๊ฐ ์ฐธ์กฐํ๋ ๊ธฐํธ. ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ๋,
๋ง์ปค๋ ํ์๋๋ ๊ธฐํธ๊ฐ ์ฐธ์กฐ๋๋ค๊ณ ๊ฐ์ ํด์ผ ํฉ๋๋ค. ์ผ๋จ ์ด ์ด๊ธฐ ์ธํธ
์น์ ์ด ๊ฒฐ์ ๋๋ฉด ๋ง์ปค๋ ๋ชจ๋ ์น์ ์ ์ฌ์ฉ๋ ๊ฒ์ผ๋ก ์ฌ๊ท์ ์ผ๋ก ํ์ํฉ๋๋ค.
๊ทธ๋ค์ ์ฌ๋ฐฐ์น์ ์ํด ์ฐธ์กฐ๋ฉ๋๋ค. ๋ณด๋ค --๊ธฐ์ and --์ฐพ์ผ์๋ ์ฃผ์๊ฐ ์์ต๋๋ค.
์ด ์ต์ ์ ๋ถ๋ถ ๋งํฌ๋ฅผ ์ํํ ๋ ์ค์ ํ ์ ์์ต๋๋ค(์ต์ ์ผ๋ก ํ์ฑํ๋จ -r). ์ด๊ฒ์์
๋ณด๊ด๋ ๊ธฐํธ์ ๋ฃจํธ๊ฐ ๋ค์ ์ค ํ๋์ ์ํด ๋ช ์์ ์ผ๋ก ์ง์ ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ --๊ธฐ์ or
--์ฐพ์ผ์๋ ์ฃผ์๊ฐ ์์ต๋๋ค ์ต์ ๋๋ ๋ง์ปค ์คํฌ๋ฆฝํธ์ "ENTRY" ๋ช ๋ น์ ์ํด.
--print-gc-์น์
--no-print-gc-์น์
๊ฐ๋น์ง ์์ง์ผ๋ก ์ ๊ฑฐ๋ ๋ชจ๋ ์น์ ์ ๋์ดํฉ๋๋ค. ๋ชฉ๋ก์ stderr์ ์ธ์๋ฉ๋๋ค.
์ด ์ต์ ์ ๊ฐ๋น์ง ์์ง์ด ๋ค์์ ํตํด ํ์ฑํ๋ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
--gc-์น์ ) ์ต์ . ๊ธฐ๋ณธ ๋์(๋ค์์ ์๋ ์น์ ์ ๋์ดํ์ง ์์)
์ ๊ฑฐ๋จ)์ ์ง์ ํ์ฌ ๋ณต์ํ ์ ์์ต๋๋ค. --no-print-gc-์น์ ๋ช ๋ น ํ์์.
--์ธ์ ์ถ๋ ฅ ํ์
๊ธฐ๋ณธ ์ถ๋ ฅ ํ์์ ์ด๋ฆ์ ์ธ์ํฉ๋๋ค(์๋ง๋ ๋ค๋ฅธ ๋ช ๋ น์ค์ ์ํฅ์ ๋ฐ์ ์ ์์).
์ต์ ). ์ด๊ฒ์ "OUTPUT_FORMAT" ๋ง์ปค ์คํฌ๋ฆฝํธ์ ๋ํ๋ ๋ฌธ์์ด์ ๋๋ค.
๋ช ๋ น.
--์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ
๋ก ์์ฑ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฌ์ฉ๋ ํฌ๊ธฐ, ์ด ํฌ๊ธฐ ๋ฐ ์ฌ์ฉ๋ ํฌ๊ธฐ๋ฅผ ์ธ์ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ
๋ช ๋ น. ์ด๋ ํฌํจ๋ ๋์์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ๋น ๋ฅด๊ฒ ๋ณผ ์ ์๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ. ์ถ๋ ฅ ํ์์๋ ์ง์ญ๋น ํ๋์ ํค๋๋ผ์ธ๊ณผ ํ๋์ ๋ผ์ธ์ด ์์ต๋๋ค. ๊ทธ๊ฒ์์ด๋ค
์ฌ๋์ด ์ฝ์ ์ ์๊ณ ๋๊ตฌ๋ก ์ฝ๊ฒ ๊ตฌ๋ฌธ ๋ถ์ํ ์ ์์ต๋๋ค. ๋ค์์ ์ถ๋ ฅ์ ์์ ๋๋ค.
์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ํฌ๊ธฐ ์์ญ ํฌ๊ธฐ ์ฌ์ฉ๋ %age
ROM: 256KB 1MB 25.00%
RAM: 32B 2GB 0.00%
--๋์
ํ์ค ์ถ๋ ฅ์ ๋ช ๋ น์ค ์ต์ ์์ฝ์ ์ธ์ํ๊ณ ์ข ๋ฃํฉ๋๋ค.
-ํ๊ฒ ํํ
ํ์ค ์ถ๋ ฅ ๋ฐ ์ข ๋ฃ์ ๋ํ ๋ชจ๋ ๋์ ํน์ ์ต์ ์ ์์ฝ์ ์ธ์ํฉ๋๋ค.
-์ง๋=๋งต ํ์ผ
ํ์ผ์ ๋ํ ๋งํฌ ๋งต ์ธ์ ๋งต ํ์ผ. ์ ๋ํ ์ค๋ช ์ ์ฐธ์กฐํ์ญ์์ค. -M ์ต์ , ์.
--no-keep-๋ฉ๋ชจ๋ฆฌ
ld ์ผ๋ฐ์ ์ผ๋ก ๊ธฐํธ ํ ์ด๋ธ์ ์บ์ฑํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ณด๋ค ์๋๋ฅผ ์ต์ ํํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ์ ํ์ผ์ ์ ๋ ฅํฉ๋๋ค. ์ด ์ต์ ์ ๋ค์์ ์๋ ค์ค๋๋ค. ld ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ ํํ๊ธฐ ์ํด
ํ์์ ๋ฐ๋ผ ๊ธฐํธ ํ ์ด๋ธ์ ๋ค์ ์ฝ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ํ์ํ ์ ์์ต๋๋ค. ld ๋ถ์กฑํ๋ค
ํฐ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ถ์กฑํฉ๋๋ค.
--์ ์๋์ง ์์
-z ๋ฐํ
์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์์ ํ์ธ๋์ง ์์ ๊ธฐํธ ์ฐธ์กฐ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ํ๋ฉ๋๋ค.
๋ง์ปค๊ฐ ๊ธฐํธ๊ฐ ์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค. ์ค์์น
--[no-]allow-shlib-์ ์๋์ง ์์ ๋ฏธํด๊ฒฐ ๋ณด๊ณ ๋ฅผ ์ํ ๋์์ ์ ์ดํฉ๋๋ค.
๋งํฌ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฐพ์ ์ฐธ์กฐ.
--ํ์ฉ-๋ค์ค ์ ์
-z ๋ฌผ ๋ฐํ
์ผ๋ฐ์ ์ผ๋ก ๊ธฐํธ๊ฐ ์ฌ๋ฌ ๋ฒ ์ ์๋๋ฉด ๋ง์ปค๋ ์น๋ช ์ ์ธ
์ค๋ฅ. ์ด๋ฌํ ์ต์ ์ ์ฌ๋ฌ ์ ์๋ฅผ ํ์ฉํ๋ฉฐ ์ฒซ ๋ฒ์งธ ์ ์๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
--allow-shlib-์ ์๋์ง ์์
--no-allow-shlib-์ ์๋์ง ์์
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ํ์ฉํ๊ฑฐ๋ ํ์ฉํ์ง ์์ต๋๋ค. ์ด ์ค์์น๋ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
--์ ์๋์ง ์์ ์ ์๋์ง ์์ ๊ธฐํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋์์ ๊ฒฐ์ ํ๋ค๋ ์ ์ ์ ์ธํ๊ณ
์ผ๋ฐ ์ค๋ธ์ ํธ ํ์ผ์ด ์๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์ต๋๋ค. ๋ฐฉ๋ฒ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์ ์ ์๋์ง ์์ ๊ธฐํธ๊ฐ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๊ธฐ๋ณธ ๋์์ ์์ ์ฐธ์กฐํ๋ ์ ์๋์ง ์์ ๊ธฐํธ์ ๋ํ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ ๊ฒ์ ๋๋ค.
๋ง์ปค๊ฐ ์คํ ํ์ผ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋์ง๋ง ํ์ฉํ๋ ค๋ฉด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ง์ปค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ.
์ ์ง์ ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ์๋์ง ์์ ๊ธฐํธ ์ฐธ์กฐ๋ฅผ ํ์ฉํ๋ ์ด์
๋งํฌ ์๊ฐ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ยท ๋งํฌ ์๊ฐ์ ์ง์ ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ฌ ์ง์ ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ์ง ์์ ์ ์์ต๋๋ค.
๋ก๋ ์๊ฐ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๊ธฐํธ๋ ๋ก๋ ์๊ฐ์ ์ค์ ๋ก ํด์๋ ์ ์์ต๋๋ค.
ยท BeOS ๋ฐ HPPA์ ๊ฐ์ ์ผ๋ถ ์ด์ ์ฒด์ ์์๋ ์ ์๋์ง ์์ ๊ธฐํธ๊ฐ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ ์์ ๋๋ค.
์๋ฅผ ๋ค์ด BeOS ์ปค๋์ ๋ก๋ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ์นํ์ฌ ์ ํํฉ๋๋ค.
ํ์ฌ ์ํคํ ์ฒ์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ๋ฅ. ์ด๊ฒ์
์๋ฅผ ๋ค์ด ์ ์ ํ memset ๊ธฐ๋ฅ์ ๋์ ์ผ๋ก ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
--์ ์๋์ง ์์ ๋ฒ์ ์์
์ผ๋ฐ์ ์ผ๋ก ๊ธฐํธ์ ์ ์๋์ง ์์ ๋ฒ์ ์ด ์์ผ๋ฉด ๋ง์ปค๋ ์ด๋ฅผ ๋ฌด์ํฉ๋๋ค. ์ด๊ฒ
์ด ์ต์ ์ ๋ฒ์ ์ด ์ ์๋์ง ์์ ๊ธฐํธ๋ฅผ ํ์ฉํ์ง ์์ผ๋ฉฐ ์น๋ช ์ ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋์ .
--๊ธฐ๋ณธ-์ฌ๋ฒ
๋ฒ์ ์ด ์ง์ ๋์ง ์์ ๋ด๋ณด๋ธ ๊ธฐํธ์ ๋ํ ๊ธฐ๋ณธ ๊ธฐํธ ๋ฒ์ (soname)์ ๋ง๋ค๊ณ ์ฌ์ฉํฉ๋๋ค.
--๊ธฐ๋ณธ-๊ฐ์ ธ์จ-symver
๋ฒ์ ์ด ์ง์ ๋์ง ์์ ๊ฐ์ ธ์จ ๊ธฐํธ์ ๋ํ ๊ธฐ๋ณธ ๊ธฐํธ ๋ฒ์ (soname)์ ๋ง๋ค๊ณ ์ฌ์ฉํฉ๋๋ค.
--๊ฒฝ๊ณ ๋ถ์ผ์น
์ผ๋ฐ์ ์ผ๋ก ld ๋ค์๊ณผ ๊ฐ์ ์ ๋ ฅ ํ์ผ์ ํจ๊ป ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ค ์ด์ ๋ก ์ผ์นํ์ง ์์ต๋๋ค. ์๋ง๋ ๋ค๋ฅธ ์ฉ๋๋ก ์ปดํ์ผ๋์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค.
ํ๋ก์ธ์ ๋๋ ๋ค๋ฅธ ์๋์์ฉ. ์ด ์ต์ ์ ๋ค์์ ์๋ ค์ค๋๋ค. ld ๊ทธ๋์ผ ํ๋ค
๊ทธ๋ฌํ ๊ฐ๋ฅํ ์ค๋ฅ๋ฅผ ์กฐ์ฉํ ํ์ฉํ์ญ์์ค. ์ด ์ต์ ์ ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๋ง์ปค ์ค๋ฅ๋ฅผ ํ์ธํ๋ ๋ช ๊ฐ์ง ํน๋ณํ ์กฐ์น๋ฅผ ์ทจํ ๊ฒฝ์ฐ
๋ถ์ ์ ํ.
--๊ฒฝ๊ณ -๊ฒ์-๋ถ์ผ์น ์์
์ผ๋ฐ์ ์ผ๋ก ld ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์ ํธํ๋์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
๊ฒ์. ์ด ์ต์ ์ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์์ผ๋ก ์ค์ ํฉ๋๋ค.
--์ ์ฒด ์์นด์ด๋ธ ์์
์ ํจ๊ณผ๋ฅผ ๋๋๋ค. --์ ์ฒด ์์นด์ด๋ธ ํ์ ์์นด์ด๋ธ ํ์ผ์ ๋ํ ์ต์ ์ ๋๋ค.
--noinhibit-exec
์ฌ์ ํ ์ฌ์ฉํ ์ ์์ ๋๋ง๋ค ์คํ ๊ฐ๋ฅํ ์ถ๋ ฅ ํ์ผ์ ์ ์งํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋
๋งํฌ ํ๋ก์ธ์ค ์ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ถ๋ ฅ ํ์ผ์ ์์ฑํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ถ๋ ฅ ํ์ผ์ ์ฐ์ง ์๊ณ ์ข ๋ฃ๋ฉ๋๋ค.
-nostdlib
๋ช ๋ น์ค์ ๋ช ์์ ์ผ๋ก ์ง์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ๋ง ๊ฒ์ํฉ๋๋ค. ๋์๊ด
๋ง์ปค ์คํฌ๋ฆฝํธ์ ์ง์ ๋ ๋๋ ํ ๋ฆฌ(์ ์ง์ ๋ ๋ง์ปค ์คํฌ๋ฆฝํธ ํฌํจ
๋ช ๋ น์ค)์ ๋ฌด์๋ฉ๋๋ค.
--oํ์=์ถ๋ ฅ ํ์
ld ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด ํ์ผ์ ์ง์ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ง์ฝ ๋น์ ์ ld is
์ด ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. --oํ์ ๋ฐ์ด๋๋ฆฌ ํ์์ ์ง์ ํ๋ ์ต์
์ถ๋ ฅ ๋ชฉ์ ํ์ผ. ๊ฒฝ์ฐ์๋ ld ๋์ฒด ๊ฐ์ฒด๋ฅผ ์ง์ํ๋๋ก ๊ตฌ์ฑ๋จ
ํ์, ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ํ์๊ฐ ์์ต๋๋ค. ld ์์ฑํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ถ๋ ฅ ํ์์ผ๋ก ๊ฐ ์์คํ ์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํ์์ ๋๋ค. ์ถ๋ ฅ ํ์ ํ๋
ํ ์คํธ ๋ฌธ์์ด, BFD ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ํ๋ ํน์ ํ์์ ์ด๋ฆ. (๋น์ ์ ํ ์ ์์ต๋๋ค
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ํ์ ๋์ด ๊ฐ์ฒด ๋คํ -i.) ์คํฌ๋ฆฝํธ ๋ช ๋ น
"OUTPUT_FORMAT"๋ ์ถ๋ ฅ ํ์์ ์ง์ ํ ์ ์์ง๋ง ์ด ์ต์ ์ด ์ด๋ฅผ ์ฌ์ ์ํฉ๋๋ค.
-ํ์ด
--pic-์คํ ๊ฐ๋ฅ
์์น ๋ ๋ฆฝ ์คํ ํ์ผ์ ๋ง๋ญ๋๋ค. ์ด๊ฒ์ ํ์ฌ ELF์์๋ง ์ง์๋ฉ๋๋ค.
ํ๋ซํผ. ์์น ๋ ๋ฆฝ ์คํ ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฌํฉ๋๋ค.
๋์ ๋ง์ปค์ ์ํด OS๊ฐ ์ ํํ ๊ฐ์ ์ฃผ์๋ก ์ฌ๋ฐฐ์น๋ฉ๋๋ค.
(ํธ์ถ๋ง๋ค ๋ค๋ฅผ ์ ์์). ์ผ๋ฐ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ ์คํ ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก
์คํ๋ ์ ์์ผ๋ฉฐ ์คํ ํ์ผ์ ์ ์๋ ๊ธฐํธ๋ ๋ค์์ผ๋ก ์ฌ์ ์๋ ์ ์์ต๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.
-qmagic
์ด ์ต์ ์ Linux ํธํ์ฑ์ ์ํด ๋ฌด์๋ฉ๋๋ค.
-Qy ์ด ์ต์ ์ SVR4 ํธํ์ฑ์ ์ํด ๋ฌด์๋ฉ๋๋ค.
--์์ฌํ๋ค
--ํด์ ์์
๊ธฐ๊ณ ์ข ์ ํจ๊ณผ๊ฐ ์๋ ์ต์ ์ ๋๋ค. ์ด ์ต์ ์ ์ผ๋ถ์์๋ง ์ง์๋ฉ๋๋ค.
๋ชฉํ.
์ผ๋ถ ํ๋ซํผ์์๋ --์์ฌํ๋ค ์ต์ ์ ๋์๋ณ ์ ์ญ ์ต์ ํ๋ฅผ ์ํํฉ๋๋ค.
๋ง์ปค๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก๊ทธ๋จ์์ ์ฃผ์ ์ง์ ์ ํด๊ฒฐํ ๋ ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
์ฃผ์ ๋ชจ๋ ์ํ, ์๋ก์ด ๋ช ๋ น์ด ํฉ์ฑ, ์งง์ ๋ฒ์ ์ ํ
ํ์ฌ ๋ช ๋ น ๋ฐ ์์ ๊ฐ ๊ฒฐํฉ.
์ผ๋ถ ํ๋ซํผ์์ ์ด๋ฌํ ๋งํฌ ์๊ฐ ์ ์ญ ์ต์ ํ๋ ์ฌ๋ณผ๋ฆญ ๋๋ฒ๊น ์ ๋ง๋ค ์ ์์ต๋๋ค.
๊ฒฐ๊ณผ ์คํ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ์ ๋ง์ฐ์ํ์ ๊ฒฝ์ฐ๋ก ์๋ ค์ ธ ์์ต๋๋ค.
MN10200 ๋ฐ MN10300 ํ๋ก์ธ์ ์ ํ๊ตฐ.
์ด๊ฒ์ด ์ง์๋์ง ์๋ ํ๋ซํผ์์๋ --์์ฌํ๋ค ํ์ฉ๋์ง๋ง ๋ฌด์๋ฉ๋๋ค.
ํ๋ซํผ์์ --์์ฌํ๋ค ์ต์ ์ด ํ์ฉ๋ฉ๋๋ค --ํด์ ์์ ๋นํ์ฑํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค
๊ธฐ๋ฅ.
--retain-๊ธฐํธ-ํ์ผ=ํ์ผ ์ด๋ฆ
์ ์งํ๋ค ๋ง ํ์ผ์ ๋์ด๋ ๊ธฐํธ ํ์ผ ์ด๋ฆ, ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ๋ฒ๋ฆฝ๋๋ค. ํ์ผ ์ด๋ฆ
ํ ์ค์ ํ๋์ ๊ธฐํธ ์ด๋ฆ์ด ์๋ ๋จ์ํ ํ๋ซ ํ์ผ์ ๋๋ค. ์ด ์ต์ ์ ํนํ
ํฐ ์ ์ญ ๊ธฐํธ ํ ์ด๋ธ์ด ์๋ ํ๊ฒฝ(์: VxWorks)์์ ์ ์ฉํฉ๋๋ค.
๋ฐํ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๊ธฐ ์ํด ์ ์ง์ ์ผ๋ก ๋์ ๋ฉ๋๋ค.
--retain-๊ธฐํธ-ํ์ผ ํ์ง ์ง์ ์ ์๋์ง ์์ ๊ธฐํธ ๋๋ ๋ค์์ ์ํด ํ์ํ ๊ธฐํธ๋ฅผ ๋ฒ๋ฆฌ์ญ์์ค.
์ฌ๋ฐฐ์น.
๋ค์๋ง ์ง์ ํ ์ ์์ต๋๋ค. --retain-๊ธฐํธ-ํ์ผ ๋ช ๋ น์ค์์ ํ ๋ฒ. ๊ทธ๊ฒ์ ์ฌ์ ์ -s
and -S.
-r๊ฒฝ๋ก=DIR
๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๊ฒฝ๋ก์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ญ์์ค. ELF๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํฉ๋๋ค.
๊ณต์ ๊ฐ์ฒด๋ก ์คํ ๊ฐ๋ฅ ๋ชจ๋ -rpath ์ธ์๊ฐ ์ฐ๊ฒฐ๋์ด ์ ๋ฌ๋ฉ๋๋ค.
๋ฐํ์์ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์ฐพ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฐํ์ ๋ง์ปค. NS -rpath
์ต์ ์ ๊ณต์ ๊ฐ์ฒด๊ฐ ํ์๋ก ํ๋ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์ฐพ์ ๋๋ ์ฌ์ฉ๋ฉ๋๋ค.
๋งํฌ์ ๋ช ์์ ์ผ๋ก ํฌํจ๋จ ์ ์ค๋ช ์ ์ฐธ์กฐํ์ญ์์ค -rpath-๋งํฌ ์ต์ . ๋ง์ฝ์
-rpath ELF ์คํ ํ์ผ์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, ํ๊ฒฝ์ ๋ด์ฉ
๋ณ์ "LD_RUN_PATH"๊ฐ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ -rpath ์ต์ ์ SunOS์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก SunOS์์ ๋ง์ปค๋
๋ชจ๋ ๊ฒ์์ ๋ฐํ์ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ํ์ฑํฉ๋๋ค. -L ์ฃผ์ด์ง ์ต์ ์ ๋๋ค. ๋ง์ฝ -rpath option
๊ฐ ์ฌ์ฉ๋๋ฉด ๋ฐํ์ ๊ฒ์ ๊ฒฝ๋ก๋ ๋ค์์ ์ฌ์ฉํ์ฌ ๋ ์ ์ ์ผ๋ก ํ์ฑ๋ฉ๋๋ค. -rpath ์ต์
๋ฌด์ -L ์ต์ . ์ด๊ฒ์ gcc๋ฅผ ์ฌ์ฉํ ๋ ์ ์ฉํ ์ ์์ต๋๋ค. -L
NFS ๋ง์ดํธ ํ์ผ ์์คํ ์ ์์ ์ ์๋ ์ต์ .
๋ค๋ฅธ ELF ๋ง์ปค์์ ํธํ์ฑ์ ์ํด -R ์ต์ ๋ค์ ๋๋ ํ ๋ฆฌ๊ฐ ์ต๋๋ค
ํ์ผ ์ด๋ฆ์ด ์๋ ์ด๋ฆ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. -rpath ์ต์ ์ ์ ํํฉ๋๋ค.
-rpath-๋งํฌ=DIR
ELF ๋๋ SunOS๋ฅผ ์ฌ์ฉํ ๋ ํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ค๋ฅธ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค.
"ld -shared" ๋งํฌ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ ฅ ํ์ผ ์ค ํ๋๋ก ํฌํจํฉ๋๋ค.
non-shared, non-relocateable์ ์ํํ ๋ ๋ง์ปค๊ฐ ์ด๋ฌํ ์ข ์์ฑ์ ๋ง๋๋ฉด
๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ์๋์ผ๋ก ํ์ํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ํฌํจํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ช ์์ ์ผ๋ก ํฌํจ๋์ง ์์ ๊ฒฝ์ฐ ๋งํฌ์ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌํ ๊ฒฝ์ฐ, -rpath-๋งํฌ option
๊ฒ์ํ ์ฒซ ๋ฒ์งธ ๋๋ ํ ๋ฆฌ ์ธํธ๋ฅผ ์ง์ ํฉ๋๋ค. NS -rpath-๋งํฌ ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค
๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ ๋ชฉ๋ก์ ์ง์ ํ์ฌ ๋๋ ํ ๋ฆฌ ์ด๋ฆ ์ํ์ค
์ฝ๋ก ๋๋ ์ฌ๋ฌ ๋ฒ ๋ํ๋ฉ๋๋ค.
์ด ์ต์ ์ ๋ค์์ ํฌํจํ ์ ์๋ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ๋ฌด์ํ๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ํ๋ ์ปดํ์ผ๋์์ต๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค
์๋์น ์๊ฒ ๋ฐํ์ ๋ง์ปค๊ฐ ์ํํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ๊ฒ์ ๊ฒฝ๋ก์ ๋๋ค.
๋ง์ปค๋ ๋ค์ ๊ฒ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ต๋๋ค.
1. ๋ค์์ ์ํด ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ -rpath-๋งํฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
2. ๋ค์์ ์ํด ์ง์ ๋ ๋ชจ๋ ๋๋ ํ ๋ฆฌ -rpath ์ต์ . ์ฐจ์ด์ -rpath and
-rpath-๋งํฌ ์ ์ํด ์ง์ ๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค. -rpath ์ต์ ์ด ํฌํจ๋์ด ์์ต๋๋ค
์คํ ๊ฐ๋ฅํ๊ณ ๋ฐํ์์ ์ฌ์ฉ๋์ง๋ง, -rpath-๋งํฌ ์ต์ ๋ง ์ ํจ
๋งํฌ ์๊ฐ์. ์์ -rpath ์ด ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ๋ง์ปค์์๋ง ์ง์๋๋ฉฐ
๋ก ๊ตฌ์ฑ๋ ๊ต์ฐจ ๋ง์ปค --sysroot์ ํจ๊ป ์ต์ ์ ์ ํํฉ๋๋ค.
3. ELF ์์คํ ์์ ๊ธฐ๋ณธ ๋ง์ปค์ ๊ฒฝ์ฐ -rpath and -rpath-๋งํฌ ์ต์ ์
์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ํ๊ฒฝ ๋ณ์ "LD_RUN_PATH"์ ๋ด์ฉ์ ๊ฒ์ํ์ญ์์ค.
4. SunOS์์ -rpath ์ต์ ์ด ์ฌ์ฉ๋์ง ์์์ต๋๋ค. ์ง์ ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ฒ์ํ์ญ์์ค.
์ฌ์ฉ -L ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
5. ๊ธฐ๋ณธ ๋ง์ปค์ ๊ฒฝ์ฐ ํ๊ฒฝ ๋ณ์์ ๋ด์ฉ์ ๊ฒ์ํฉ๋๋ค.
"LD_LIBRARY_PATH".
6. ๊ธฐ๋ณธ ELF ๋ง์ปค์ ๊ฒฝ์ฐ ๊ณต์ ํ์ผ์ "DT_RUNPATH" ๋๋ "DT_RPATH"์ ์๋ ๋๋ ํฐ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํ์ํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฒ์ํฉ๋๋ค. "DT_RPATH" ํญ๋ชฉ์
"DT_RUNPATH" ํญ๋ชฉ์ด ์์ผ๋ฉด ๋ฌด์๋ฉ๋๋ค.
7. ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ, ์ผ๋ฐ์ ์ผ๋ก / lib and ๋ฅผ / usr / lib์.
8. ELF ์์คํ ์ ๊ธฐ๋ณธ ๋ง์ปค์ ๊ฒฝ์ฐ ํ์ผ์ด /etc/ld.so.conf ์กด์ฌ, ๋ชฉ๋ก
ํด๋น ํ์ผ์์ ๋ฐ๊ฒฌ๋ ๋๋ ํ ๋ฆฌ์
ํ์ํ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉด ๋ง์ปค๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๊ณ
๋งํฌ๋ฅผ ๊ณ์ ์งํํฉ๋๋ค.
-๊ณต์
-B๊ณต์ ๊ฐ๋ฅ
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๊ฒ์ ํ์ฌ ELF, XCOFF ๋ฐ SunOS์์๋ง ์ง์๋ฉ๋๋ค.
ํ๋ซํผ. SunOS์์ ๋ง์ปค๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. -e
์ต์ ์ด ์ฌ์ฉ๋์ง ์๊ณ ๋งํฌ์ ์ ์๋์ง ์์ ๊ธฐํธ๊ฐ ์์ต๋๋ค.
--์ ๋ ฌ-๊ณตํต
--sort-common=์ค๋ฆ์ฐจ์
--sort-common=๋ด๋ฆผ์ฐจ์
์ด ์ต์ ์ ld ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ๊ณตํต ๊ธฐํธ๋ฅผ ์ ๋ ฌํ๊ฑฐ๋
์ ์ ํ ์ถ๋ ฅ ์น์ ์ ๋ฐฐ์นํ ๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์์ง๋ฌผ
๊ณ ๋ ค๋๋ ์ ๋ ฌ์ XNUMX๋ฐ์ดํธ ์ด์, XNUMX๋ฐ์ดํธ, XNUMX๋ฐ์ดํธ, XNUMX๋ฐ์ดํธ ๋ฐ
XNUMX๋ฐ์ดํธ. ์ด๋ ์ ๋ ฌ ์ ์ฝ์ผ๋ก ์ธํ ๊ธฐํธ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
์ ๋ ฌ ์์๊ฐ ์ง์ ๋๋ฉด ๋ด๋ฆผ์ฐจ์์ด ๊ฐ์ ๋ฉ๋๋ค.
--sort-section=์ด๋ฆ
์ด ์ต์ ์ ๋ง์ปค์ ๋ชจ๋ ์์ผ๋์นด๋ ์น์ ํจํด์ "SORT_BY_NAME"์ ์ ์ฉํฉ๋๋ค.
์คํฌ๋ฆฝํธ.
--sort-section=์ ๋ ฌ
์ด ์ต์ ์ "SORT_BY_ALIGNMENT"๋ฅผ ๋ชจ๋ ์์ผ๋์นด๋ ์น์ ํจํด์ ์ ์ฉํฉ๋๋ค.
๋ง์ปค ์คํฌ๋ฆฝํธ.
--ํ์ผ๋ณ๋ก ๋ถํ [=ํฌ๊ธฐ]
์ ์ฌํ๊ฒ --์ฌํ ๋น์ผ๋ก ๋ถํ ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ ์ ๋ ฅ ํ์ผ์ ๋ํด ์ ์ถ๋ ฅ ์น์ ์ ์์ฑํฉ๋๋ค.
ํฌ๊ธฐ ์ ๋๋ฌํ์ต๋๋ค. ํฌ๊ธฐ ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
--์ฌ์ง์ ๋ณ ๋ถํ [=๊ณ์ฐ]
๋จ์ผ ์ถ๋ ฅ ์น์ ์ด
ํ์ผ์ด ๋ค์๋ณด๋ค ๋ง์ด ํฌํจ๋์ด ์์ต๋๋ค. ๊ณ์ฐ ์ฌ๋ฐฐ์น. ์ด๊ฒ์ ๊ฑฐ๋ํ
COFF ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์ค์๊ฐ ์ปค๋๋ก ๋ค์ด๋ก๋ํ๊ธฐ ์ํ ์ฌ๋ฐฐ์น ๊ฐ๋ฅํ ํ์ผ
ํ์ผ ํ์; COFF๋ ๋จ์ผ ์์น์์ 65535๊ฐ ์ด์์ ์ฌ๋ฐฐ์น๋ฅผ ๋ํ๋ผ ์ ์๊ธฐ ๋๋ฌธ์
๋ถ๋ถ. ๊ทธ๋ ์ง ์์ ๊ฐ์ฒด ํ์ผ ํ์์์๋ ์๋ํ์ง ์์ต๋๋ค.
์์์ ์น์ ์ ์ง์ํฉ๋๋ค. ๋ง์ปค๋ ๊ฐ๋ณ ์ ๋ ฅ ์น์ ์ ๋ถํ ํ์ง ์์ต๋๋ค.
์ฌ๋ฐฐํฌ๋ฅผ ์ํด ๋จ์ผ ์ ๋ ฅ ์น์ ์ ๊ณ์ฐ ์ฌ๋ฐฐ์น
ํ๋์ ์ถ๋ ฅ ์น์ ์๋ ๋ง์ ์ฌ๋ฐฐ์น๊ฐ ํฌํจ๋ ๊ฒ์ ๋๋ค. ๊ณ์ฐ ๊ธฐ๋ณธ๊ฐ์
32768.
--ํต๊ณ
์คํ๊ณผ ๊ฐ์ ๋ง์ปค ์์ ์ ๋ํ ํต๊ณ๋ฅผ ๊ณ์ฐํ๊ณ ํ์ํฉ๋๋ค.
์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋.
--sysroot=์๋ฐฐ ๊ท์น์
์๋ฐฐ ๊ท์น์ ๊ตฌ์ฑ ์๊ฐ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๋ sysroot์ ์์น๋ก.
์ด ์ต์ ์ ๋ค์์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ๋ ๋ง์ปค์์๋ง ์ง์๋ฉ๋๋ค. --sysroot์ ํจ๊ป.
--์ ํต ํ์
์ผ๋ถ ๋์์ ๊ฒฝ์ฐ ์ถ๋ ฅ ld ์ด๋ค ๋ฉด์์ ์ผ๋ถ์ ์ถ๋ ฅ๊ณผ ๋ค๋ฆ ๋๋ค.
๊ธฐ์กด ๋ง์ปค. ์ด ์ค์์น ์์ฒญ ld ๋์ ๊ธฐ์กด ํ์์ ์ฌ์ฉํฉ๋๋ค.
์๋ฅผ ๋ค์ด SunOS์์ ld ๊ธฐํธ ๋ฌธ์์ด ํ ์ด๋ธ์ ์ค๋ณต ํญ๋ชฉ์ ๊ฒฐํฉํฉ๋๋ค. ์ด๊ฒ
์ ์ฒด ๋๋ฒ๊น ์ ๋ณด๊ฐ ํฌํจ๋ ์ถ๋ ฅ ํ์ผ์ ํฌ๊ธฐ๋ฅผ 30๊ฐ ์ด์ ์ค์ผ ์ ์์ต๋๋ค.
ํผ์ผํธ. ๋ถํํ๋, SunOS "dbx" ํ๋ก๊ทธ๋จ์ ๊ฒฐ๊ณผ ํ๋ก๊ทธ๋จ์ ์ฝ์ ์ ์์ต๋๋ค
("gdb"๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค). NS --์ ํต ํ์ ์ค์์น๊ฐ ์๋ ค์ค๋๋ค ld ๊ฒฐํฉํ์ง ์๊ธฐ ์ํด
์ค๋ณต ํญ๋ชฉ.
--์น์ ์์=์น์ ์ด๋ฆ=์กฐ์ง
์ ์ํด ์ ๊ณต๋ ์ ๋ ์ฃผ์์์ ์ถ๋ ฅ ํ์ผ์ ์น์ ์ ์ฐพ์ต๋๋ค. ์กฐ์ง. ๋น์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
์ด ์ต์ ์ ๋ช ๋ น์์ ์ฌ๋ฌ ์น์ ์ ์ฐพ๋ ๋ฐ ํ์ํ ๋งํผ
์ค์ ๋๋ค. ์กฐ์ง ๋จ์ผ XNUMX์ง์ ์ ์์ฌ์ผ ํฉ๋๋ค. ๋ค๋ฅธ ๋ง์ปค์์ ํธํ์ฑ์ ์ํด
๋น์ ์ ์ ํ์ ์๋ตํ ์ ์์ต๋๋ค 0x ์ผ๋ฐ์ ์ผ๋ก XNUMX์ง์ ๊ฐ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ฐธ๊ณ : ๊ฐ
์ฌ์ด์ ๊ณต๋ฐฑ์ด ์์ด์ผ ํฉ๋๋ค. ์น์ ์ด๋ฆ, ๋ฑํธ("="), ๊ทธ๋ฆฌ๊ณ ์กฐ์ง.
-Tbss=์กฐ์ง
-๋ฐ์ดํฐ=์กฐ์ง
-๋ฌธ์=์กฐ์ง
๊ณผ ๋์ผ --์น์ ์์, ".bss", ".data" ๋๋ ".text"๋ฅผ ์น์ ์ด๋ฆ.
-Ttext-์ธ๊ทธ๋จผํธ=์กฐ์ง
ELF ์คํ ํ์ผ์ ๋ง๋ค ๋ ํ ์คํธ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ธ๊ทธ๋จผํธ.
-ํธ๋ก๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ=์กฐ์ง
์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๊ฐ ์๋ ๋์์ ๋ํด ELF ์คํ ํ์ผ ๋๋ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋
์คํ ๊ฐ๋ฅํ ํ ์คํธ์ ๋ณ๊ฐ์ ์์ฒด ์ธ๊ทธ๋จผํธ์ ์์ผ๋ฉด ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ.
-Tldata-์ธ๊ทธ๋จผํธ=์กฐ์ง
x86-64 ์คํ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ฉ ELF ์คํ ํ์ผ ๋๋ ๊ณต์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋
ldata ์ธ๊ทธ๋จผํธ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ ์ฃผ์๋ฅผ ์ค์ ํฉ๋๋ค.
--ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ=๋ฐฉ๋ฒ
ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํฉ๋๋ค. ์ ๋ํด XNUMX๊ฐ์ง ๊ฐ๋ฅํ ๊ฐ์ด ์์ต๋๋ค.
๋ฐฉ๋ฒ:
์ ๋ถ๋ค ๋ฌด์ํด๋ผ
ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ํ์ง ๋ง์ญ์์ค.
๋ชจ๋ ๋ณด๊ณ ํ๋ค
ํด๊ฒฐ๋์ง ์์ ๋ชจ๋ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๊ฐ์ฒด ํ์ผ์์ ๋ฌด์
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋ ํ์ธ๋์ง ์์ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ํ์ง๋ง ๋ฌด์ํฉ๋๋ค.
์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์์ ์จ ๊ฒฝ์ฐ.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌด์
์ผ๋ฐ ๊ฐ์ฒด ํ์ผ์์ ์ค๋ ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ฌด์ํฉ๋๋ค.
๊ทธ๋ค์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์์ต๋๋ค. ๋์ ์์ฑ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ด๋๋ฆฌ์ด๋ฉฐ ์ฐธ์กฐํด์ผ ํ๋ ๋ชจ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ
๋ง์ปค์ ๋ช ๋ น์ค์ ํฌํจ๋ฉ๋๋ค.
์์ฒด์ ์ผ๋ก ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์์ ์ ์ดํ ์๋ ์์ต๋๋ค.
--[no-]allow-shlib-์ ์๋์ง ์์ ์ต์ ์ ์ ํํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋ ๋ณด๊ณ ๋ ํ์ธ๋์ง ์์ ๊ฐ ๊ธฐํธ์ ๋ํด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ์์ฑํฉ๋๋ค.
ํ์ง๋ง ์ต์ --๊ฒฝ๊ณ -๋ฏธํด๊ฒฐ-๊ธฐํธ ๊ฒฝ๊ณ ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
--dll-์์ธ
--์ฅํฉํ[=NUMBER]
์ ๋ํ ๋ฒ์ ๋ฒํธ ํ์ ld ์ง์๋๋ ๋ง์ปค ์๋ฎฌ๋ ์ด์ ์ ๋์ดํฉ๋๋ค. ํ์ํ๋ค
์ด๋ค ์ ๋ ฅ ํ์ผ์ ์ด ์ ์๊ณ ์ด ์ ์์ต๋๋ค. ์ฌ์ฉ ์ค์ธ ๋ง์ปค ์คํฌ๋ฆฝํธ ํ์
๋ง์ปค. ์ ํ์ฌํญ์ธ ๊ฒฝ์ฐ NUMBER ์ธ์ > 1, ํ๋ฌ๊ทธ์ธ ๊ธฐํธ ์ํ๋
ํ์๋ฉ๋๋ค.
--๋ฒ์ ์คํฌ๋ฆฝํธ=๋ฒ์ ์คํฌ๋ฆฝํธ ํ์ผ
๋ง์ปค์ ๋ํ ๋ฒ์ ์คํฌ๋ฆฝํธ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฒ์ ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ง์ ํ๊ธฐ ์ํด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ
์์ฑ ์ค์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณ์ธต ๊ตฌ์กฐ์ ๋๋ค. ์ด ์ต์ ์ ELF์์๋ง ์์ ํ ์ง์๋ฉ๋๋ค.
๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๋ ํ๋ซํผ ๋ณด๋ค ๋ฒ์ . ์์ ๋ถ๋ถ์ ์ผ๋ก ์ง์๋ฉ๋๋ค.
๋ฒ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ๋ด๋ณด๋ด๊ธฐ์์ ๊ธฐํธ ๊ฐ์์ฑ์ ํํฐ๋งํ ์ ์๋ PE ํ๋ซํผ
๋ชจ๋: ํ์๋ ๋ชจ๋ ๊ธฐํธ ์ง๋ฐฉ์ ๋ฒ์ ์คํฌ๋ฆฝํธ์์ ๋ด๋ณด๋ด์ง์ง ์์ต๋๋ค.
--๊ฒฝ๊ณ -๊ณตํต
๊ณตํต ๊ธฐํธ๊ฐ ๋ค๋ฅธ ๊ณตํต ๊ธฐํธ ๋๋ ๊ธฐํธ์ ๊ฒฐํฉ๋ ๋ ๊ฒฝ๊ณ
์ ์. ์ ๋์ค ๋ง์ปค๋ ์ด ๋ค์ ์์ฑํ ๊ดํ์ ํ์ฉํ์ง๋ง ์ผ๋ถ ๋ง์ปค๋
๋ค๋ฅธ ์ด์ ์ฒด์ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ ์ญ ๊ธฐํธ ๊ฒฐํฉ์์. ๋ถํํ๋ ์ผ๋ถ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ฏ๋ก
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ก๊ทธ๋จ์์ ๊ธฐํธ์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ C ์์ ๋ก ์ค๋ช ๋ ์ธ ๊ฐ์ง ์ข ๋ฅ์ ์ ์ญ ๊ธฐํธ๊ฐ ์์ต๋๋ค.
INT i = 1;
์ถ๋ ฅ ํ์ผ์ ์ด๊ธฐํ๋ ๋ฐ์ดํฐ ์น์ ์ ๋ค์ด๊ฐ๋ ์ ์.
์ธ๋ถ INT i;
๊ณต๊ฐ์ ํ ๋นํ์ง ์๋ ์ ์๋์ง ์์ ์ฐธ์กฐ์ ๋๋ค. ๋ค์ ์ค ํ๋๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ด๋๊ฐ์ ๋ณ์์ ๋ํ ์ ์ ๋๋ ๊ณตํต ๊ธฐํธ.
INT i;
์ผ๋ฐ์ ์ธ ๊ธฐํธ์ ๋๋ค. ๋ณ์์ ๋ํ ๊ณตํต ๊ธฐํธ๊ฐ ํ๋ ์ด์ ์๋ ๊ฒฝ์ฐ
์ถ๋ ฅ ํ์ผ์ ์ด๊ธฐํ๋์ง ์์ ๋ฐ์ดํฐ ์์ญ์ผ๋ก ์ด๋ํฉ๋๋ค. ๋ง์ปค ๋ณํฉ
๋์ผํ ๋ณ์์ ๋ํ ์ฌ๋ฌ ๊ณตํต ๊ธฐํธ๋ฅผ ๋จ์ผ ๊ธฐํธ๋ก. ๋ง์ฝ ๊ทธ๋ค์ด
ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ฐ์ฅ ํฐ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ๋ง์ปค๋ ๊ณตํต ๊ธฐํธ๋ฅผ ์ผญ๋๋ค.
๋์ผํ ๋ณ์์ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ ์ธ์ผ๋ก.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --๊ฒฝ๊ณ -๊ณตํต ์ต์ ์ XNUMX๊ฐ์ง ์ข ๋ฅ์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ฐ ๊ฒฝ๊ณ ๋ ๋ค์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
ํ ์์ ๋ผ์ธ: ์ฒซ ๋ฒ์งธ๋ ๋ฐฉ๊ธ ๋ง๋ ๊ธฐํธ๋ฅผ ์ค๋ช ํ๊ณ ๋ ๋ฒ์งธ๋
๋์ผํ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฒฌ๋ ์ด์ ๊ธฐํธ๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋ ์ค ํ๋ ๋๋ ๋ ๋ค
๊ธฐํธ๋ ๊ณตํต ๊ธฐํธ๊ฐ ๋ฉ๋๋ค.
1. ์ด๋ฏธ ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ณตํต ๊ธฐํธ๋ฅผ ์ฐธ์กฐ๋ก ์ ํ
์์ง์ ์ํด.
( ): ๊ฒฝ๊ณ : `์ ๊ณตํต '
์ ์์ ์ํด ์ฌ์ ์๋จ
( ): ๊ฒฝ๊ณ : ์ฌ๊ธฐ์ ์ ์๋จ
2. ๋์ค์ ์ ์ํ๊ธฐ ๋๋ฌธ์ ๊ณตํต ๊ธฐํธ๋ฅผ ์ฐธ์กฐ๋ก ์ ํ
๊ธฐํธ๊ฐ ๋ํ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์ด์ ์ ๊ฒฝ์ฐ์ ๋์ผํฉ๋๋ค.
๊ธฐํธ๋ ๋ค๋ฅธ ์์๋ก ๋ฐ์ํฉ๋๋ค.
( ): ๊ฒฝ๊ณ : `์ ์ ์ '
์ฐ์ ๊ณตํต
( ): ๊ฒฝ๊ณ : ๊ณตํต์ด ์ฌ๊ธฐ์ ์์ต๋๋ค.
3. ๊ณตํต ์ฌ๋ณผ์ ์ด์ ์ ๋์ผํ ํฌ๊ธฐ์ ๊ณตํต ์ฌ๋ณผ๊ณผ ๋ณํฉํฉ๋๋ค.
( ): ๊ฒฝ๊ณ : ๋ค์ค ๊ณตํต
`์ '
( ): ๊ฒฝ๊ณ : ์ด์ ๊ณตํต์ด ์ฌ๊ธฐ์ ์์ต๋๋ค.
4. ๊ณตํต ์ฌ๋ณผ์ ์ด์ ์ ๋ ํฐ ๊ณตํต ์ฌ๋ณผ๊ณผ ๋ณํฉํฉ๋๋ค.
( ): ๊ฒฝ๊ณ : `์ ๊ณตํต '
๋ ํฐ ๊ณตํต์ผ๋ก ์ฌ์ ์๋จ
( ): ๊ฒฝ๊ณ : ๋ ํฐ ๊ณตํต์ด ์ฌ๊ธฐ์ ์์ต๋๋ค.
5. ๊ณตํต ์ฌ๋ณผ์ ์ด์ ์ ๋ ์์ ๊ณตํต ์ฌ๋ณผ๊ณผ ๋ณํฉํฉ๋๋ค. ์ด๊ฒ์ ๋์ผํ๋ค
๊ธฐํธ๊ฐ ๋ค๋ฅธ ์์น์์ ๋ง๋๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ์ด์ ์ ๊ฒฝ์ฐ์ ๊ฐ์ต๋๋ค.
์ฃผ๋ฌธ.
( ): ๊ฒฝ๊ณ : `์ ๊ณตํต '
๋ ์์ ๊ณตํต ์ฌ์ ์
( ): ๊ฒฝ๊ณ : ๋ ์์ ๊ณตํต์ด ์ฌ๊ธฐ์ ์์ต๋๋ค.
--warn-์์ฑ์
์ ์ญ ์์ฑ์๊ฐ ์ฌ์ฉ๋๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ๋ช ๊ฐ์ง ๋ชฉ์ ํ์ผ์๋ง ์ ์ฉํฉ๋๋ค.
ํ์. COFF ๋๋ ELF์ ๊ฐ์ ํ์์ ๊ฒฝ์ฐ ๋ง์ปค๋ ์ ์ญ ์ฌ์ฉ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
์์ฑ์.
--warn-๋ค์ค-gp
์ถ๋ ฅ ํ์ผ์ ์ฌ๋ฌ ๊ธ๋ก๋ฒ ํฌ์ธํฐ ๊ฐ์ด ํ์ํ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ๋จ์ง
Alpha์ ๊ฐ์ ํน์ ํ๋ก์ธ์์ ์๋ฏธ๊ฐ ์์ต๋๋ค. ํนํ ์ผ๋ถ ํ๋ก์ธ์
ํน๋ณํ ์น์ ์ ํฐ ๊ฐ์ ์์๋ฅผ ๋ฃ์ผ์ญ์์ค. ํน์ ๋ ์ง์คํฐ(๊ธ๋ก๋ฒ
ํฌ์ธํฐ)๊ฐ ์ด ์น์ ์ ์ค๊ฐ์ ๊ฐ๋ฆฌํค๋ฏ๋ก ์์๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค.
๋ฒ ์ด์ค ๋ ์ง์คํฐ ์๋ ์ฃผ์ ์ง์ ๋ชจ๋๋ฅผ ํตํด ํจ์จ์ ์ผ๋ก ๋ฒ ์ด์ค์ ์คํ์ ์ดํ-
๋ ์ง์คํฐ ์๋ ๋ชจ๋๋ ๊ณ ์ ๋๊ณ ์๋์ ์ผ๋ก ์์ต๋๋ค(์: 16๋นํธ).
์์ ํ์ ์ต๋ ํฌ๊ธฐ. ๋ฐ๋ผ์ ๋๊ท๋ชจ ํ๋ก๊ทธ๋จ์์๋ ์ข ์ข ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
๊ฐ๋ฅํ ๋ชจ๋ ์ฃผ์๋ฅผ ์ง์ ํ ์ ์๋๋ก ์ฌ๋ฌ ์ ์ญ ํฌ์ธํฐ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์์. ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ์ด ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๊ฒฝ๊ณ ๊ฐ ๋ฐํ๋ฉ๋๋ค.
--๊ฒฝ๊ณ -ํ ๋ฒ
๋ค์์ ์ฐธ์กฐํ๋ ๋ชจ๋๋น ํ ๋ฒ์ด ์๋๋ผ ์ ์๋์ง ์์ ๊ฐ ๊ธฐํธ์ ๋ํด ํ ๋ฒ๋ง ๊ฒฝ๊ณ ํฉ๋๋ค.
๊ทธ๊ฒ.
--๊ฒฝ๊ณ ์น์ ์ ๋ ฌ
์ ๋ ฌ๋ก ์ธํด ์ถ๋ ฅ ์น์ ์ ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก,
์ ๋ ฌ์ ์ ๋ ฅ ์น์ ์ ์ํด ์ค์ ๋ฉ๋๋ค. ์ฃผ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ช ์์ ์ผ๋ก ์ง์ ๋์ง ์์; ์ฆ, "SECTIONS" ๋ช ๋ น์ด ์์์ ์ง์ ํ์ง ์์ผ๋ฉด
์น์ ์ ์ฃผ์์ ๋๋ค.
--warn-shared-textrel
๋ง์ปค๊ฐ ๊ณต์ ๊ฐ์ฒด์ DT_TEXTREL์ ์ถ๊ฐํ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
--๊ฒฝ๊ณ -๋์ฒด-em
๊ฐ์ฒด์ ๋์ฒด ELF ๊ธฐ๊ณ์ด ์ฝ๋๊ฐ ์์ผ๋ฉด ๊ฒฝ๊ณ ํฉ๋๋ค.
--๊ฒฝ๊ณ -๋ฏธํด๊ฒฐ-๊ธฐํธ
๋ง์ปค๊ฐ ํ์ธ๋์ง ์์ ๊ธฐํธ๋ฅผ ๋ณด๊ณ ํ ๊ฒฝ์ฐ(์ต์ ์ฐธ์กฐ
--ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ) ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ์ต์ ์
๋์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ์ญ์์ค.
--์ค๋ฅ-ํด๊ฒฐ๋์ง ์์-๊ธฐํธ
์ด๊ฒ์ ๋ณด๊ณ ํ ๋ ์ค๋ฅ๋ฅผ ์์ฑํ๋ ๋ง์ปค์ ๊ธฐ๋ณธ ๋์์ ๋ณต์ํฉ๋๋ค.
ํด๊ฒฐ๋์ง ์์ ๊ธฐํธ.
--์ ์ฒด ์์นด์ด๋ธ
๋ค์ ๋ช ๋ น์ค์ ์ธ๊ธ๋ ๊ฐ ์์นด์ด๋ธ์ ๋ํด --์ ์ฒด ์์นด์ด๋ธ ์ ํ๊ถ,
ํ์ผ์ ๊ฒ์ํ๋ ๋์ ๋งํฌ์ ์์นด์ด๋ธ์ ์๋ ๋ชจ๋ ๊ฐ์ฒด ํ์ผ์ ํฌํจํฉ๋๋ค.
ํ์ํ ๊ฐ์ฒด ํ์ผ์ ๋ํ ์์นด์ด๋ธ. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์์นด์ด๋ธ ํ์ผ์ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฒฐ๊ณผ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ๋๋๋ก ๊ฐ์ ๋ก ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก
๋์๊ด. ์ด ์ต์ ์ ๋ ๋ฒ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
gcc์์ ์ด ์ต์ ์ ์ฌ์ฉํ ๋ ๋ ๊ฐ์ง ์ฐธ๊ณ ์ฌํญ: ์ฒซ์งธ, gcc๋ ์ด ์ต์ ์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
๊ทธ๋์ ๋น์ ์ ์ฌ์ฉํด์ผํฉ๋๋ค -Wl,-์ ์ฒด ์์นด์ด๋ธ. ๋์งธ, ์ฌ์ฉํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค
-Wl,-no-์ ์ฒด ์์นด์ด๋ธ ์์นด์ด๋ธ ๋ชฉ๋ก ๋ค์ gcc๊ฐ ์์ฒด ๋ชฉ๋ก์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์นด์ด๋ธ๋ฅผ ๋งํฌ์ ์ถ๊ฐํ๊ณ ์ด ํ๋๊ทธ๊ฐ ํด๋น ์์นด์ด๋ธ์๋ ์ํฅ์ ๋ฏธ์น๊ธฐ๋ฅผ ์ํ์ง ์์ ์ ์์ต๋๋ค.
--๋ฉ=์์ง
๋ํผ ํจ์ ์ฌ์ฉ ์์ง. ์ ์๋์ง ์์ ์ฐธ์กฐ ์์ง ํด๊ฒฐ๋ ๊ฒ์ด๋ค
"__๋ฉ_์์ง". "__real_์ ๋ํ ์ ์๋์ง ์์ ์ฐธ์กฐ์์ง" ๋ก ํด๊ฒฐ๋ฉ๋๋ค
์์ง.
์ด๊ฒ์ ์์คํ ๊ธฐ๋ฅ์ ๋ํ ๋ํผ๋ฅผ ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํผ ํจ์
"__wrap_์์ง". ์์คํ ๊ธฐ๋ฅ์ ํธ์ถํ๋ ค๋ฉด
์ ํ "__real_์์ง".
๋ค์์ ๊ฐ๋จํ ์์ ๋๋ค.
๋ฌดํจ์ *
__wrap_malloc(ํฌ๊ธฐ_t c)
{
printf("malloc์ด %zu๋ก ํธ์ถ๋์์ต๋๋ค\n", c);
๋ฐํ __real_malloc(c);
}
๋ค์์ ์ฌ์ฉํ์ฌ ์ด ํ์ผ์ ๋ค๋ฅธ ์ฝ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ --ํฌ์ฅํ๋ค Malloc, "malloc"์ ๋ํ ๋ชจ๋ ํธ์ถ
๋์ "__wrap_malloc" ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. "__real_malloc"์ ๋ํ ํธ์ถ
"__wrap_malloc"์ ์ค์ "malloc" ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
"__real_malloc" ํจ์๋ ์ ๊ณตํ์ฌ ๋งํฌ๊ฐ ์๋ ๋งํฌ๊ฐ
--ํฌ์ฅํ๋ค ์ต์ ์ด ์ฑ๊ณตํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ์ ์๋ฅผ ๋ฃ์ผ๋ฉด ์ ๋ฉ๋๋ค.
"__wrap_malloc"๊ณผ ๋์ผํ ํ์ผ์ "__real_malloc"; ๊ทธ๋ ๊ฒ ํ๋ฉด ์ด์ ๋ธ๋ฌ๊ฐ
๋ง์ปค๊ฐ "malloc"์ผ๋ก ๋ํํ๊ธฐ ์ ์ ํธ์ถ์ ํด๊ฒฐํฉ๋๋ค.
--eh-ํ๋ ์-hdr
".eh_frame_hdr" ์น์ ๋ฐ ELF "PT_GNU_EH_FRAME" ์ธ๊ทธ๋จผํธ ํค๋ ์์ฑ์ ์์ฒญํฉ๋๋ค.
--no-ld-์์ฑ-ํด์ -์ ๋ณด
๋ค์๊ณผ ๊ฐ์ ๋ง์ปค ์์ฑ ์ฝ๋ ์น์ ์ ๋ํ ".eh_frame" ํด์ ์ ๋ณด ์์ฑ ์์ฒญ
PLT. ๋ง์ปค์์ ์์ฑํ ํด์ ์ ๋ณด๊ฐ ์ง์๋๋ ๊ฒฝ์ฐ ์ด ์ต์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค.
--enable-new-dtags
--disable-new-dtags
์ด ๋ง์ปค๋ ELF์์ ์๋ก์ด ๋์ ํ๊ทธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ ELF ์์คํ ์ ๊ทธ๋ ์ง ์์ ์ ์์ต๋๋ค.
๊ทธ๋ค์ ์ดํดํ์ญ์์ค. ์ง์ ํ๋ ๊ฒฝ์ฐ --enable-new-dtags, ์ ๋์ ํ๊ทธ๋
ํ์์ ๋ฐ๋ผ ์์ฑ๋๋ฉฐ ์ด์ ๋์ ํ๊ทธ๋ ์๋ต๋ฉ๋๋ค. ์ง์ ํ๋ ๊ฒฝ์ฐ
--disable-new-dtags, ์ ๋์ ํ๊ทธ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ก์ด ๋์
ํ๊ทธ๊ฐ ์์ฑ๋์ง ์์ต๋๋ค. ์ด๋ฌํ ์ต์ ์ ELF ์์คํ ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
--ํด์ ํฌ๊ธฐ=๋ฒํธ
๋ง์ปค ํด์ ํ ์ด๋ธ์ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ ๊ฐ๊น์ด ์์๋ก ์ค์ ํฉ๋๋ค. ๋ฒํธ.
์ด ๊ฐ์ ๋๋ฆฌ๋ฉด ๋ง์ปค๊ฐ ํด๋น ์์ ์ ์ํํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค.
๋ง์ปค์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ ๋๋ฆฌ๋ ๋์ ์์ ์ ์ํํฉ๋๋ค. ๋น์ทํ๊ฒ
์ด ๊ฐ์ ์ค์ด๋ฉด ์๋๋ฅผ ํฌ์์ํค๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ ์ค์ผ ์ ์์ต๋๋ค.
--ํด์ ์คํ์ผ=์คํ์ผ
๋ง์ปค์ ํด์ ํ ์ด๋ธ ์ ํ์ ์ค์ ํฉ๋๋ค. ์คํ์ผ ํด๋์ ELF์ ๊ฒฝ์ฐ "sysv"์ผ ์ ์์ต๋๋ค.
".hash" ์น์ , ์๋ก์ด ์คํ์ผ GNU์ ๊ฒฝ์ฐ "gnu" ".gnu.hash" ์น์ ๋๋ ๋ ๋ค์ ๋ํ "both"
๊ณ ์ ์ ์ธ ELF ".hash" ๋ฐ ์๋ก์ด ์คํ์ผ์ GNU ".gnu.hash" ํด์ ํ ์ด๋ธ. ๊ธฐ๋ณธ๊ฐ์ "sysv"์ ๋๋ค.
--compress-debug-sections=์์
--์์ถ-๋๋ฒ๊ทธ-์น์ =zlib
--์์ถ-๋๋ฒ๊ทธ-์น์ =zlib-gnu
--์์ถ-๋๋ฒ๊ทธ-์น์ =zlib-gabi
ELF ํ๋ซํผ์์ ์ด ์ต์ ์ DWARF ๋๋ฒ๊ทธ ์น์ ์ด ๋ค์์ ์ฌ์ฉํ์ฌ ์์ถ๋๋ ๋ฐฉ์์ ์ ์ดํฉ๋๋ค.
์ฆ๋ฆฌ๋ธ. --compress-debug-sections=์์ DWARF ๋๋ฒ๊ทธ ์น์ ์ ์์ถํ์ง ์์ต๋๋ค.
--์์ถ-๋๋ฒ๊ทธ-์น์ =zlib-gnu DWARF ๋๋ฒ๊ทธ ์น์ ์ ์์ถํ๊ณ ๋๋ฒ๊ทธ ์ด๋ฆ์ ๋ฐ๊ฟ๋๋ค.
์์ํ๋ ์น์ ์ด๋ฆ .z๋๋ฒ๊ทธ ๋์ .๋๋ฒ๊ทธ. --์์ถ-๋๋ฒ๊ทธ-์น์ =zlib
and --์์ถ-๋๋ฒ๊ทธ-์น์ =zlib-gabi DWARF ๋๋ฒ๊ทธ ์น์ ์์ถ
ELF ABI์ SHF_COMPRESSED. ๊ธฐ๋ณธ ๋์์
๊ด๋ จ๋ ๋์ ๋ฐ ๋๊ตฌ ์ฒด์ธ์ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ตฌ์ฑ ์ต์ . ๊ธฐ๋ณธ๊ฐ
๋ง์ปค์ ์ถ๋ ฅ์ ๊ฒ์ฌํ์ฌ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. --๋์ ์ต์ ์ ์ ํํฉ๋๋ค.
--๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋ ๊ฐ์
์ด ์ต์ ์ ๋งํฌ๋ฅผ ํฌ์ํ์ฌ ld ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ์ ์ค์ ๋๋ค.
์๋. ์ด๊ฒ์ ๋งํฌ ๋งต ํ์ผ์ ๋ํ ์ด์ O(n^2) ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๊ธฐ ์ํด ๋์ ๋์์ต๋๋ค.
์์ฑ์ ์ํด ์ฝ 40% ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์๋ก์ด O(n) ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค
๊ธฐํธ ์ ์ฅ.
์ค์์น์ ๋ ๋ค๋ฅธ ํจ๊ณผ๋ ๊ธฐ๋ณธ ํด์ ํ ์ด๋ธ ํฌ๊ธฐ๋ฅผ 1021๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
๋ง์ปค์ ์คํ ์๊ฐ์ ๋๋ฆฌ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค์ ์ ์ฝํฉ๋๋ค. ์ด๊ฒ์ ์ํ๋์ง ์์ต๋๋ค
๊ทธ๋ฌ๋ ๋ง์ฝ --ํด์ ํฌ๊ธฐ ์ค์์น๊ฐ ์ฌ์ฉ๋์์ต๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋ ๊ฐ์ ์ค์์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์ ์ถฉ์์ ํ์ฑํํ ์๋ ์์ต๋๋ค.
๋ง์ปค์ ๋ฏธ๋ ๋ฒ์ .
--๋น๋ ์์ด๋
--๋น๋ ์์ด๋=์คํ์ผ
".note.gnu.build-id" ELF ๋ฉ๋ชจ ์น์ ๋๋ ".buildid" COFF ์์ฑ ์์ฒญ
๋ถ๋ถ. ๋ฉ๋ชจ์ ๋ด์ฉ์ ์ด ์ฐ๊ฒฐ๋ ํ์ผ์ ์๋ณํ๋ ๊ณ ์ ํ ๋นํธ์ ๋๋ค.
์คํ์ผ 128๊ฐ์ ์์ ๋นํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "uuid"๊ฐ ๋ ์ ์๊ณ , 1๋นํธ SHA160 ํด์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "sha1"์ด ๋ ์ ์์ต๋๋ค.
์ถ๋ ฅ ๋ด์ฉ์ ๊ท๋ฒ์ ์ธ ๋ถ๋ถ, "md5"๋ 128๋นํธ MD5 ํด์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ถ๋ ฅ ๋ด์ฉ์ ๊ท๋ฒ์ ์ธ ๋ถ๋ถ ๋๋ "0x์ก๊ฐ ๋ฌธ์์ด" ์ ํํ ๋นํธ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ค๋ฉด
์ง์์ XNUMX์ง์๋ก ์ง์ ๋ฉ๋๋ค("-" ๋ฐ ":" ๋ฌธ์ ์ฌ์ด
์ซ์ ์์ ๋ฌด์๋ฉ๋๋ค). ๋ง์ฝ์ ์คํ์ผ ์๋ตํ๋ฉด "sha1"์ด ์ฌ์ฉ๋ฉ๋๋ค.
"md5" ๋ฐ "sha1" ์คํ์ผ์ ํญ์ ๋์ผํ ์๋ณ์๋ฅผ ์์ฑํฉ๋๋ค.
๋์ผํ ์ถ๋ ฅ ํ์ผ์ด์ง๋ง ๋์ผํ์ง ์์ ๋ชจ๋ ์ถ๋ ฅ ํ์ผ ์ค์์ ๊ณ ์ ํฉ๋๋ค. ๊ทธ๊ฒ์์ด๋ค
ํ์ผ ๋ด์ฉ์ ๋ํ ์ฒดํฌ์ฌ์ผ๋ก ๋น๊ตํ๊ธฐ ์ํ ๊ฒ์ด ์๋๋๋ค. ๋งํฌ๋ ํ์ผ์
๋์ค์ ๋ค๋ฅธ ๋๊ตฌ์ ์ํด ๋ณ๊ฒฝ๋์ง๋ง ์๋ณธ์ ์๋ณํ๋ ๋น๋ ID ๋นํธ ๋ฌธ์์ด
๋งํฌ๋ ํ์ผ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค.
"์์" ์ ๋ฌ ์คํ์ผ ์ด์ ์ "--build-id" ์ต์ ์์ ์ค์ ์ ๋นํ์ฑํํฉ๋๋ค.
๋ช ๋ น์ค.
i386 PE ๋ง์ปค๋ ๋ค์์ ์ง์ํฉ๋๋ค. -๊ณต์ ์ถ๋ ฅ์ด ๋๋๋ก ํ๋ ์ต์
์ผ๋ฐ ์คํ ํ์ผ ๋์ ๋์ ์ผ๋ก ์ฐ๊ฒฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(DLL). ์ด๋ฆ์ ์ง์ด์ผ ํฉ๋๋ค.
์ด ์ต์ ์ ์ฌ์ฉํ ๋ "*.dll"์ ์ถ๋ ฅํฉ๋๋ค. ๋ํ ๋ง์ปค๋
๊ฐ์ฒด์ฒ๋ผ ๋ง์ปค ๋ช ๋ น์ค์ ์ง์ ๋ ์ ์๋ ํ์ค "*.def" ํ์ผ
ํ์ผ(์ฌ์ค, ์ฌ๋ณผ์ ๋ด๋ณด๋ด๋ ์์นด์ด๋ธ๋ณด๋ค ๋จผ์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
์ผ๋ฐ ์ค๋ธ์ ํธ ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งํฌ๋จ).
๋ชจ๋ ๋์์ ๊ณตํต์ ์ธ ์ต์ ์ธ์๋ i386 PE ๋ง์ปค๋ ์ถ๊ฐ ์ง์
i386 PE ๋์๊ณผ ๊ด๋ จ๋ ๋ช ๋ น์ค ์ต์ . ๊ฐ์ ์ทจํ๋ ์ต์
๊ณต๋ฐฑ์ด๋ ๋ฑํธ๋ก ๊ฐ๊ณผ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
--์ถ๊ฐ-stdcall-๋ณ์นญ
์ฃผ์ด์ง ๊ฒฝ์ฐ stdcall ์ ๋ฏธ์ฌ๊ฐ ์๋ ๊ธฐํธ(@nn) ์๋ ๊ทธ๋๋ก ๋ฐ ํจ๊ป ๋ด๋ณด๋ด์ง๋๋ค.
์ ๋ฏธ์ฌ ์ ๊ฑฐ. [์ด ์ต์ ์ ๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
--๋ฒ ์ด์ค ํ์ผ ํ์ผ
ํ์ผ ๋ชจ๋ ๊ธฐ๋ณธ ์ฃผ์๋ฅผ ์ ์ฅํ ํ์ผ์ ์ด๋ฆ์ผ๋ก
DLL์ ์์ฑํ๋ ๋ฐ ํ์ํ ์ฌ๋ฐฐ์น DLL ๋๊ตฌ. [i386 PE ์ ์ฉ์ ๋๋ค.
์ต์ ]
--dll
์ผ๋ฐ ์คํ ํ์ผ ๋์ DLL์ ๋ง๋ญ๋๋ค. ๋น์ ์ ๋ํ ์ฌ์ฉํ ์ ์์ต๋๋ค -๊ณต์ ๋๋ ์ง์
์ฃผ์ด์ง ".def" ํ์ผ์ "LIBRARY". [์ด ์ต์ ์ ๋์ i386 PE์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค์ ํฌํธ]
--ํ์ฑํ ๊ธด ์น์ ์ด๋ฆ
--๋นํ์ฑํ ๊ธด ์น์ ์ด๋ฆ
COFF ๊ฐ์ฒด ํ์์ PE ๋ณํ์ ๋ค์์ ์ฌ์ฉํ ์ ์๋ ํ์ฅ์ ์ถ๊ฐํฉ๋๋ค.
์น์ ์ด๋ฆ์ด XNUMX์๋ณด๋ค ๊ธธ๋ฉด COFF์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ํ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก,
์ด ์ด๋ฆ์ ์์ ํ ์ฐ๊ฒฐ๋ ์คํ ์ด๋ฏธ์ง๊ฐ ํ์ฉ๋์ง ์์ผ๋ฏ๋ก ๊ฐ์ฒด ํ์ผ์์๋ง ํ์ฉ๋ฉ๋๋ค.
๋ ๊ธด ์ด๋ฆ์ ์ง์ํ๋ ๋ฐ ํ์ํ COFF ๋ฌธ์์ด ํ ์ด๋ธ์ ์ํํฉ๋๋ค. GNU ํ์ฅ์ผ๋ก,
์คํ ๊ฐ๋ฅํ ์ด๋ฏธ์ง์์๋ ์ฌ์ฉ์ ํ์ฉํ๊ฑฐ๋ (์๋ง๋
๋ฌด์๋ฏธํ๊ฒ!) ์ด ๋ ๊ฐ์ง ์ต์ ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ํ์ผ์์ ์ด๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค. ์คํ ํ์ผ
์ด๋ฌํ ๊ธด ์น์ ์ด๋ฆ์ผ๋ก ์์ฑ๋ ์ด๋ฏธ์ง๋ ์ฝ๊ฐ ๋นํ์ค์ ๋๋ค.
๊ทธ๋ค์ ๋ฌธ์์ด ํ ์ด๋ธ์ ์ํํ๊ณ ๋น GNU๋ก ๊ฒ์ฌํ ๋ ํผ๋์ค๋ฌ์ด ์ถ๋ ฅ์ ์์ฑํ ์ ์์ต๋๋ค.
ํ์ผ ๋ทฐ์ด ๋ฐ ๋คํผ์ ๊ฐ์ PE ์ธ์ ๋๊ตฌ. ๊ทธ๋ฌ๋ GDB๋ ๋ค์์ ์ฌ์ฉ์ ์์กดํฉ๋๋ค.
์คํ ํ์ผ์์ Dwarf-2 ๋๋ฒ๊ทธ ์ ๋ณด ์น์ ์ ์ฐพ๊ธฐ ์ํ PE ๊ธด ์น์ ์ด๋ฆ
๋ฐํ์ ์ ์ด๋ฏธ์ง์ด๋ฏ๋ก ๋ช ๋ น์ค์ ๋ ์ต์ ์ด ๋ชจ๋ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ld ์์ง
๊ธฐ๋ณธ ๋ฐ ๊ธฐ์ ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๋์์ ์ฌ์ ์ํ์ฌ ๊ธด ์น์ ์ด๋ฆ์ ํ์ฑํํฉ๋๋ค.
์คํ ๊ฐ๋ฅํ ์ด๋ฏธ์ง๋ฅผ ๋งํฌํ๋ ๋์ ๋๋ฒ๊ทธ ์ ๋ณด์ ์กด์ฌ๋ฅผ ๋ฐ๊ฒฌํ๊ณ
๊ธฐํธ๋ฅผ ์ ๊ฑฐํ์ง ์์ต๋๋ค. [์ด ์ต์ ์ ๋ง์ปค์ ๋ชจ๋ PE ๋์ ํฌํธ์ ์ ํจํฉ๋๋ค.]
--enable-stdcall-fixup
--disable-stdcall-fixup
๋งํฌ๊ฐ ํด๊ฒฐํ ์ ์๋ ๊ธฐํธ๋ฅผ ์ฐพ์ผ๋ฉด "ํผ์ง
์ฐ๊ฒฐ" ํ์๋ง ๋ค๋ฅธ ์ ์๋ ๋ ๋ค๋ฅธ ๊ธฐํธ๋ฅผ ์ฐพ์์ผ๋ก์จ
๊ธฐํธ ์ด๋ฆ(cdecl ๋ stdcall)๊ณผ ์ผ์นํ๋ ํญ๋ชฉ์ ์ฐ๊ฒฐํ์ฌ ํด๋น ๊ธฐํธ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์๋์ง ์์ ๊ธฐํธ "_foo"๋ "_foo@12" ํจ์์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
์ ์๋์ง ์์ ๊ธฐํธ "_bar@16"์ "_bar" ๊ธฐ๋ฅ์ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค. ๋
๋ง์ปค๊ฐ ์ด ์์ ์ ์ํํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ ์คํจํด์ผ ํ๋ฏ๋ก ๊ฒฝ๊ณ ๋ฅผ ์ธ์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋๋๋ก ํ์ฌ dll์์ ์์ฑ๋ ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด ๊ธฐ๋ฅ์ด ํ์ํ ์ ์์ต๋๋ค.
์ฌ์ฉํ ์ ์์ต๋๋ค. ์ง์ ํ๋ ๊ฒฝ์ฐ --enable-stdcall-fixup, ์ด ๊ธฐ๋ฅ์ด ์์ ํ ํ์ฑํ๋์์ต๋๋ค.
๋ฐ ๊ฒฝ๊ณ ๊ฐ ์ธ์๋์ง ์์ต๋๋ค. ์ง์ ํ๋ ๊ฒฝ์ฐ --disable-stdcall-fixup, ์ด ๊ธฐ๋ฅ์
๋นํ์ฑํ๋๋ฉฐ ์ด๋ฌํ ๋ถ์ผ์น๋ ์ค๋ฅ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ]
--์ ํ ๋ฐ์ค
--์์ ๋ฐ์ค ์์
๋๋ถ๋ถ์ ๋์์ ๋ํด ๊ธฐ๋ณธ ๊ธฐํธ ์ ๋์ฌ๋ ๋ฐ์ค์ด๋ฉฐ ๋์์
์ค๋ช . ์ด ์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ๋ฐ์ค์ ๋นํ์ฑํ/ํ์ฑํํ ์ ์์ต๋๋ค.
๊ธฐํธ ์ ๋์ฌ.
--๋ด๋ณด๋ด๊ธฐ-๋ชจ๋ ๊ธฐํธ
์ฃผ์ด์ง ๊ฒฝ์ฐ DLL์ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฒด์ ๋ชจ๋ ์ ์ญ ๊ธฐํธ๋ ๋ค์์์ ๋ด๋ณด๋ ๋๋ค.
DLL. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ด๋ณด๋ผ ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ ๋๋ค.
๊ธฐํธ. ๊ธฐํธ๋ฅผ DEF ํ์ผ์ ํตํด ๋ช ์์ ์ผ๋ก ๋ด๋ณด๋ด๊ฑฐ๋ ์์์ ์ผ๋ก ๋ด๋ณด๋ด๋ ๊ฒฝ์ฐ
ํจ์ ์์ฑ์ ํตํด ๊ธฐ๋ณธ๊ฐ์ ์ด ์ต์ ์ด ์์ผ๋ฉด ๋ค๋ฅธ ๊ฒ์ ๋ด๋ณด๋ด์ง ์๋ ๊ฒ์ ๋๋ค.
์ฃผ์ด์ง๋ค. ๊ธฐํธ "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12" ๋ฐ "impure_ptr"์ ์๋์ผ๋ก ๋ด๋ณด๋ด์ง์ง ์์ต๋๋ค. ๋ํ,
๋ค๋ฅธ DLL์์ ๊ฐ์ ธ์จ ๊ธฐํธ๋ ๋ค์ ๋ด๋ณด๋ด์ง์ง ์์ผ๋ฉฐ ๋ค์์ ์ง์ ํ๋ ๊ธฐํธ๋ ๋ด๋ณด๋ด์ง ์์ต๋๋ค.
"_head_"๋ก ์์ํ๊ฑฐ๋ ๋ค์์ผ๋ก ๋๋๋ DLL์ ๋ด๋ถ ๋ ์ด์์
"_์ด๋ฆ". ๋ํ "libgcc", "libstd++", "libmingw32" ๋๋
"crtX.o"๊ฐ ๋ด๋ณด๋ด์ง๋๋ค. ์ด๋ฆ์ด "__rtti_" ๋๋ "__builtin_"์ผ๋ก ์์ํ๋ ๊ธฐํธ
C++ DLL์ ๋๊ธฐ ์ํด ๋ด๋ณด๋ด์ง์ง ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๊ด๋ฒ์ํ ๋ชฉ๋ก์ด ์์ต๋๋ค.
๋ด๋ณด๋ด์ง์ง ์๋ cygwin-private ๊ธฐํธ(๋ถ๋ช ํ ์ด๊ฒ์ ๋น๋ํ ๋ ์ ์ฉ๋ฉ๋๋ค.
cygwin ํ๊ฒ์ฉ DLL). ์ด๋ฌํ cygwin ์ ์ธ ํญ๋ชฉ์ "_cygwin_dll_entry@12",
"_cygwin_crt0_common@8", "_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr",
"cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2",
"cygwin_premain3" ๋ฐ "ํ๊ฒฝ". [์ด ์ต์ ์ ๋์ i386 PE์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค์ ํฌํธ]
--exclude-๊ธฐํธ ์์ง,์์ง, ...
์๋์ผ๋ก ๋ด๋ณด๋ด์ง ์์์ผ ํ๋ ๊ธฐํธ ๋ชฉ๋ก์ ์ง์ ํฉ๋๋ค. ์์ง๋ฌผ
์ด๋ฆ์ ์ผํ๋ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. [์ด ์ต์ ์ i386 PE์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค์ ๋์ ํฌํธ]
--๋ชจ๋ ๊ธฐํธ ์ ์ธ
๊ธฐํธ๋ฅผ ์๋์ผ๋ก ๋ด๋ณด๋ด์ง ์๋๋ก ์ง์ ํฉ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ]
--ํ์ผ ์ ๋ ฌ
ํ์ผ ์ ๋ ฌ์ ์ง์ ํฉ๋๋ค. ํ์ผ์ ์น์ ์ ํญ์ ํ์ผ ์คํ์ ์์ ์์๋ฉ๋๋ค.
์ด ์ซ์์ ๋ฐฐ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 512์ ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ๋ก]
--๋๋ฏธ ๋น์ถ
--๋๋ฏธ ๋น์ถ,๋ฒํ๋ค
๋ค์์ผ๋ก ์ฌ์ฉํ ์์ฝ(๋ฐ ์ ํ์ ์ผ๋ก ์ปค๋ฐ)ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํธ ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ ํ. ๊ธฐ๋ณธ๊ฐ์ 1MB ์์ฝ, 4K ์ปค๋ฐ์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--์ด๋ฏธ์ง ๊ธฐ๋ฐ ๊ฐ์น
๊ฐ์น ํ๋ก๊ทธ๋จ ๋๋ dll์ ๊ธฐ๋ณธ ์ฃผ์๋ก ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ๊ฐ์ฅ ๋ฎ์ ๋ฉ๋ชจ๋ฆฌ์ ๋๋ค.
ํ๋ก๊ทธ๋จ์ด๋ dll์ด ๋ก๋๋ ๋ ์ฌ์ฉ๋ ์์น์ ๋๋ค. ํ์๋ฅผ ์ค์ด๊ธฐ ์ํด
dll์ ์ฌ๋ฐฐ์นํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํค๋ ค๋ฉด ๊ฐ๊ฐ ๊ณ ์ ํ ๊ธฐ๋ณธ ์ฃผ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
๋ค๋ฅธ dll๊ณผ ๊ฒน์น์ง ์์์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์คํ ํ์ผ์ ๊ฒฝ์ฐ 0x400000์ด๋ฉฐ,
DLL์ ๊ฒฝ์ฐ 0x10000000์ ๋๋ค. [์ด ์ต์ ์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค]
--์ฃฝ์ด๋ค
์ฃผ์ด์ง ๊ฒฝ์ฐ stdcall ์ ๋ฏธ์ฌ(@nn) ๊ธฐํธ๊ฐ ์ ๊ฑฐ๋๊ธฐ ์ ์ ๊ธฐํธ์์ ์ ๊ฑฐ๋ฉ๋๋ค.
์์ถ. [์ด ์ต์ ์ ๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
--ํฐ ์ฃผ์ ์ธ์
์ฃผ์ด์ง ๊ฒฝ์ฐ COFF ํค๋์ "ํน์ฑ" ํ๋์ ์ ์ ํ ๋นํธ๊ฐ ์ค์ ๋ฉ๋๋ค.
์ด ์คํ ํ์ผ์ด 2GB๋ณด๋ค ํฐ ๊ฐ์ ์ฃผ์๋ฅผ ์ง์ํจ์ ๋ํ๋ ๋๋ค.
/3GB ๋๋ /USERVA=์ ํจ๊ป ์ฌ์ฉํด์ผ ํฉ๋๋ค.๊ฐ์น ๋ฉ๊ฐ๋ฐ์ดํธ ์ค์์น ์ธ
BOOT.INI์ "[์ด์ ์ฒด์ ]" ์น์ . ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด ๋นํธ๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
[์ด ์ต์ ์ ๋ง์ปค์ PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
--๋นํ์ฑํ-๋ํ ์ฃผ์ ์ธ์
์ด์ ํจ๊ณผ๋ฅผ ๋๋๋ฆฝ๋๋ค. --ํฐ ์ฃผ์ ์ธ์ ์ต์ . ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
--ํฐ ์ฃผ์ ์ธ์ ํญ์ ์ปดํ์ผ๋ฌ ๋๋ผ์ด๋ฒ(์: Cygwin gcc)์ ์ํด ์ค์ ๋๋ฉฐ
์คํ ํ์ผ์ 2GB๋ณด๋ค ํฐ ๊ฐ์ ์ฃผ์๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ PE ๋์ ํฌํธ์๋ง ํด๋น]
--์ฃผ์ ์ด๋ฏธ์ง ๋ฒ์ ๊ฐ์น
"์ด๋ฏธ์ง ๋ฒ์ "์ ์ฃผ์ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--์ฃผ์ ์ด์ ์ฒด์ ๋ฒ์ ๊ฐ์น
"os ๋ฒ์ "์ ์ฃผ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 4์ ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ๋ก]
--์ฃผ์ ํ์ ์์คํ ๋ฒ์ ๊ฐ์น
"ํ์ ์์คํ ๋ฒ์ "์ ์ฃผ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 4์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--๋ถ ์ด๋ฏธ์ง ๋ฒ์ ๊ฐ์น
"์ด๋ฏธ์ง ๋ฒ์ "์ ๋ถ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--๋ถ OS ๋ฒ์ ๊ฐ์น
"os ๋ฒ์ "์ ๋ถ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ๋ก]
--๋ถ-์๋ธ์์คํ -๋ฒ์ ๊ฐ์น
"ํ์ ์์คํ ๋ฒ์ "์ ๋ถ ๋ฒํธ๋ฅผ ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--์ถ๋ ฅ ์ ์ ํ์ผ
๋ง์ปค๋ ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ ํด๋นํ๋ DEF ํ์ผ์ ํฌํจํฉ๋๋ค.
๋ง์ปค๊ฐ ์์ฑํ๋ DLL์ ๋๋ค. ์ด DEF ํ์ผ("*.def"๋ผ๊ณ ํจ)์
"dlltool"์ ์ฌ์ฉํ์ฌ ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ๊ฑฐ๋ ๋ค์ ํญ๋ชฉ์ ๋ํ ์ฐธ์กฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ ๋๋ ์์์ ์ผ๋ก ๋ด๋ณด๋ธ ๊ธฐํธ. [์ด ์ต์ ์ i386 PE์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค์ ๋์ ํฌํธ]
--out-implib ํ์ผ
๋ง์ปค๋ ํ์ผ์ ์์ฑํฉ๋๋ค. ํ์ผ ์ ํด๋นํ๋ ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ฉ๋๋ค.
๋ง์ปค๊ฐ ์์ฑํ๋ DLL์ ๋๋ค. ์ด ๊ฐ์ ธ์ค๊ธฐ lib("*.dll.a" ๋๋
"*.a"๋ ์์ฑ๋ DLL์ ๋ํด ํด๋ผ์ด์ธํธ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ํ๋์
๋ณ๋์ "dlltool" ๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ ๋จ๊ณ๋ฅผ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--์๋ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ํ์ฑํ
--์๋ ์ด๋ฏธ์ง ๊ธฐ๋ฐ ํ์ฑํ=๊ฐ์น
์ ํ์ ์ผ๋ก base๋ก ์์ํ๋ DLL์ ๋ํ ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ ์๋์ผ๋ก ์ ํํฉ๋๋ค. ๊ฐ์น,
"--image-base" ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ํ์ง ์๋ ํ. ์์ฑ๋ ํด์๋ฅผ ์ฌ์ฉํ์ฌ
dllname์์ ๊ฐ DLL, ๋ฉ๋ชจ๋ฆฌ ๋ด ์ถฉ๋ ๋ฐ
ํ๋ก๊ทธ๋จ ์คํ์ ์ง์ฐ์ํฌ ์ ์๋ ์ฌ๋ฐฐ์น๋ ํผํฉ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ๋ก]
--disable-auto-image-base
๊ณ ์ ํ ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ ์๋์ผ๋ก ์์ฑํ์ง ๋ง์ญ์์ค. ์ฌ์ฉ์ ์ง์ ์ด ์๋ ๊ฒฝ์ฐ
์ด๋ฏธ์ง ๊ธฐ๋ฐ("--image-base")์ ์ ํํ ๋ค์ ํ๋ซํผ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ๋ก]
--dll ๊ฒ์ ์ ๋์ด ํ
๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ด dll์ ๋์ ์ผ๋ก ๋งํฌํ ๋ ๋ค์์ ๊ฒ์ํ์ญ์์ค.
" "lib๋ณด๋ค .dll" .dll". ์ด ๋์์
๋ค์ํ "ํ์ ํ๋ซํผ"์ฉ์ผ๋ก ๋น๋๋ DLL ๊ฐ์ ์ฌ์ด ๊ตฌ๋ณ: ๋ค์ดํฐ๋ธ, cygwin,
uwin, pw ๋ฑ. ์๋ฅผ ๋ค์ด cygwin DLL์ ์ผ๋ฐ์ ์ผ๋ก "--dll-search-prefix=cyg"๋ฅผ ์ฌ์ฉํฉ๋๋ค.
[์ด ์ต์ ์ ๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
--์๋ ๊ฐ์ ธ์ค๊ธฐ ์ฌ์ฉ
DLL์์ DATA ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ํด "_symbol"์ "__imp__symbol"์ ์ ๊ตํ๊ฒ ์ฐ๊ฒฐํฉ๋๋ค.
๊ฐ์ ธ์ค๊ธฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํ ๋ ํ์ํ ์ฝํน ๊ธฐํธ๋ฅผ ์์ฑํฉ๋๋ค.
DATA ๋ด๋ณด๋ด๊ธฐ. ์ฐธ๊ณ : '์๋ ๊ฐ์ ธ์ค๊ธฐ' ํ์ฅ์ ์ฌ์ฉํ๋ฉด ํ ์คํธ๊ฐ
์ฐ๊ธฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ์ด๋ฏธ์ง ํ์ผ์ ์น์ . ์ด๊ฒ์ PE-COFF๋ฅผ ์ค์ํ์ง ์์ต๋๋ค.
Microsoft์์ ๊ฒ์ํ ํ์ ์ฌ์.
์ฐธ๊ณ - '์๋ ๊ฐ์ ธ์ค๊ธฐ' ํ์ฅ์ ์ฌ์ฉํ๋ฉด ์ฝ๊ธฐ ์ ์ฉ ๋ฐ์ดํฐ๋ ๋ฐ์ํ๋ฏ๋ก
์ผ๋ฐ์ ์ผ๋ก .rdata ์น์ ์ ๋ฐฐ์น๋์ด .data ์น์ ์ ๋ฐฐ์น๋ฉ๋๋ค.
๋์ ์. ์ด๊ฒ์ ์ค๋ช ๋ const์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์ด๋ฒคํธ ์์ฝ ๋งํฌ: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html
'์๋ ๊ฐ์ ธ์ค๊ธฐ'๋ฅผ ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก '๊ทธ๋ฅ ์๋'ํฉ๋๋ค.
๋ฉ์์ง:
"๋ณ์ ' '์(๋) ์๋์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ld's์ ๋ํ ์ค๋ช ์๋ฅผ ์ฝ์ผ์ญ์์ค.
์์ธํ ๋ด์ฉ์ "--enable-auto-import"๋ฅผ ์ฐธ์กฐํ์ญ์์ค."
์ด ๋ฉ์์ง๋ ์ผ๋ถ (ํ์) ํํ์์ด ๊ถ๊ทน์ ์ผ๋ก ๋ค์์ ์ํด ์ ๊ณต๋ ์ฃผ์์ ์ก์ธ์คํ ๋ ๋ฐ์ํฉ๋๋ค.
๋ ์์์ ํฉ(Win32 ๊ฐ์ ธ์ค๊ธฐ ํ ์ด๋ธ์ ํ๋๋ง ํ์ฉ). ์ด
DLL์์ ๊ฐ์ ธ์จ ๊ตฌ์กฐ์ฒด ๋ณ์์ ๋ฉค๋ฒ ํ๋์ ๋ํ ์ก์ธ์ค๋ฅผ ํฌํจํ์ฌ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฟ๋ง ์๋๋ผ DLL์์ ๊ฐ์ ธ์จ ๋ฐฐ์ด ๋ณ์์ ์์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋
๋ค์ค ๋จ์ด ๋ณ์(๋ฐฐ์ด, ๊ตฌ์กฐ์ฒด, long long ๋ฑ)๊ฐ ์ด ์ค๋ฅ ์กฐ๊ฑด์ ์ ๋ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฌธ์ ๊ฐ ๋๋ ๋ด๋ณด๋ธ ๋ณ์์ ์ ํํ ๋ฐ์ดํฐ ์ ํ์ ๊ด๊ณ์์ด ld๋
ํญ์ ๊ทธ๊ฒ์ ๊ฐ์งํ๊ณ ๊ฒฝ๊ณ ๋ฅผ ๋ฐํํ๊ณ ์ข ๋ฃํ์ญ์์ค.
๋ฐ์ดํฐ ์ ํ์ ๊ด๊ณ์์ด ์ด ์ด๋ ค์์ ํด๊ฒฐํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ด๋ณด๋ธ ๋ณ์:
ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ --enable-runtime-pseudo-reloc ์ค์์น๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ๊ณผ์ ๋ฅผ ๋จ๊น๋๋ค.
์ด ๋ฐฉ๋ฒ์ด ์๋ํ๋๋ก ๋ฐํ์ ํ๊ฒฝ์ ๋ํ ํด๋ผ์ด์ธํธ ์ฝ๋์ ์ฐธ์กฐ ์กฐ์
๋ฐํ์ ํ๊ฒฝ์ด ์ด ๊ธฐ๋ฅ์ ์ง์ํ๋ ๊ฒฝ์ฐ์๋ง.
๋ ๋ฒ์งธ ํด๊ฒฐ์ฑ ์ '์์' ์ค ํ๋๋ฅผ ๋ณ์๋ก ๊ฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์ฆ,
์ ์ ์๊ณ ์ปดํ์ผ ์๊ฐ์ ์ต์ ํํ ์ ์์ต๋๋ค. ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
a) indexee(๋ฐฐ์ด์ ์ฃผ์)๋ฅผ ๋ณ์๋ก ๋ง๋ค๊ฑฐ๋ b) 'constant' ์ธ๋ฑ์ค๋ฅผ ๋ง๋ญ๋๋ค.
๋ณ์. ๋ฐ๋ผ์:
์ธ๋ถ ์ ํ extern_array[];
extern_array[1] -->
{ ํ๋ฐ์ฑ ์ ํ *t=extern_array; t[1] }
or
์ธ๋ถ ์ ํ extern_array[];
extern_array[1] -->
{ ํ๋ฐ์ฑ ์ ์ t=1; ์ธ๋ถ ๋ฐฐ์ด[t] }
๊ตฌ์กฐ์ฒด(๋ฐ ๋๋ถ๋ถ์ ๋ค๋ฅธ ๋ค์ค ๋จ์ด ๋ฐ์ดํฐ ์ ํ)์ ๊ฒฝ์ฐ ์ ์ผํ ์ต์ ์
๊ตฌ์กฐ์ฒด ์์ฒด(๋๋ long long ๋๋ ...) ๋ณ์:
extern ๊ตฌ์กฐ์ฒด extern_struct;
extern_struct.field -->
{ ํ๋ฐ์ฑ ๊ตฌ์กฐ์ฒด *t=&extern_struct; t->ํ๋ }
or
์ธ๋ถ ๊ธด ๊ธด extern_ll;
extern_ll -->
{ ํ๋ฐ์ฑ long long * local_ll=&extern_ll; *local_ll }
์ด ์ด๋ ค์์ ์ฒ๋ฆฌํ๋ ์ธ ๋ฒ์งธ ๋ฐฉ๋ฒ์ '์๋ ๊ฐ์ ธ์ค๊ธฐ'๋ฅผ ํฌ๊ธฐํ๋ ๊ฒ์ ๋๋ค.
๊ธฐํธ๋ฅผ ์๋ฐํ๊ณ "__declspec(dllimport)"๋ก ํ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ๊ทธ
DLL์ ๋น๋ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ปดํ์ผ ํ์ #defines๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
DLL์ ๋งํฌํ ํด๋ผ์ด์ธํธ ์ฝ๋๋ฅผ ๋น๋ํ๊ฑฐ๋ ๋จ์ํ ์ ์ ํ์ผ์ ๋น๋/๋งํฌ
๋์๊ด. '์ง์ ํด๊ฒฐ'์ ๋ค์ํ ๋ฐฉ๋ฒ ์ค์์ ์ ํ์ ํจ์ ์์ด
์ผ์ ํ ์คํ์ ์ด ์๋ ์ฃผ์' ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ์ค์ ์ฌ์ฉ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ค๋ฌผ:
--foo.h
์ธ๋ถ ์ ์ [];
--foo.c
# "foo.h" ํฌํจ
๋ฌดํจ ๋ฉ์ธ(int argc, char **argv){
printf("%d\n",arr[1]);
}
์๋ฃจ์ 1 :
--foo.h
์ธ๋ถ ์ ์ [];
--foo.c
# "foo.h" ํฌํจ
๋ฌดํจ ๋ฉ์ธ(int argc, char **argv){
/* ์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ win32 ๋ฐ cygwin์ ๋ํ ๊ฒ์ ๋๋ค. "์ต์ ํ"ํ์ง ๋ง์ญ์์ค */
ํ๋ฐ์ฑ int *parr = arr;
printf("%d\n",parr[1]);
}
์๋ฃจ์ 2 :
--foo.h
/* ์ฐธ๊ณ : ์๋ ๋ด๋ณด๋ด๊ธฐ๊ฐ ๊ฐ์ ๋ฉ๋๋ค(__declspec(dllexport) ์์) */
#if (์ ์(_WIN32) || ์ ์(__CYGWIN__)) && \
!(์ ์(FOO_BUILD_DLL) || ์ ์(FOO_STATIC))
#define FOO_IMPORT __declspec(dllimport)
#๊ทธ๋ฐ์
#FOO_IMPORT ์ ์
#endif
extern FOO_IMPORT int arr[];
--foo.c
# "foo.h" ํฌํจ
๋ฌดํจ ๋ฉ์ธ(int argc, char **argv){
printf("%d\n",arr[1]);
}
์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ๋ค ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ค์ ์ฝ๋ฉํ๋ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๊ฐ ๋๋ ๋ณ์์ ๋ํ ๋ฐ์ดํฐ ์ธํฐํ์ด์ค๊ฐ ์๋ ์ธํฐํ์ด์ค(์: set_foo() and
get_foo() ์ ๊ทผ์ ๊ธฐ๋ฅ). [์ด ์ต์ ์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค]
--๋นํ์ฑํ ์๋ ๊ฐ์ ธ์ค๊ธฐ
DATA์ ๋ํด "_symbol"์ "__imp__symbol"์ ์ ๊ตํ๊ฒ ์ฐ๊ฒฐํ๋ ค๊ณ ์๋ํ์ง ๋ง์ญ์์ค.
DLL์์ ๊ฐ์ ธ์ต๋๋ค. [์ด ์ต์ ์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค]
--ํ์ฑํ-๋ฐํ์-์์ฌ-reloc
์ฝ๋์ --enable-auto-import ์น์ ์ ์ค๋ช ๋ ํํ์์ด ํฌํจ๋ ๊ฒฝ์ฐ, ์ฆ,
์คํ์ ์ด XNUMX์ด ์๋ DLL์์ DATA๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ ์ด ์ค์์น๋ ๋ค์๊ณผ ๊ฐ์ ๋ฒกํฐ๋ฅผ ์์ฑํฉ๋๋ค.
๋ฐํ์ ํ๊ฒฝ์์ ์กฐ์ ํ ์ ์๋ '๋ฐํ์ ์์ฌ ์ฌ๋ฐฐ์น'
ํด๋ผ์ด์ธํธ ์ฝ๋์์ ๊ทธ๋ฌํ ๋ฐ์ดํฐ์ ๋ํ ์ฐธ์กฐ. [์ด ์ต์ ์ i386 PE์๋ง ํด๋น๋ฉ๋๋ค.
๋ง์ปค์ ๋์ ํฌํธ]
--disable-runtime-์์ฌ-reloc
DLL์์ XNUMX์ด ์๋ ์คํ์ DATA ๊ฐ์ ธ์ค๊ธฐ์ ๋ํด ์์ฌ ์ฌ๋ฐฐ์น๋ฅผ ์์ฑํ์ง ๋ง์ญ์์ค. [์ด๊ฒ
์ต์ ์ ๋ง์ปค์ i386 PE ๋์ ํฌํธ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.]
--extra-pe-debug ํ์ฑํ
์๋ ๊ฐ์ ธ์ค๊ธฐ ๊ธฐํธ ์ฝํน๊ณผ ๊ด๋ จ๋ ์ถ๊ฐ ๋๋ฒ๊ทธ ์ ๋ณด๋ฅผ ํ์ํฉ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--์น์ ์ ๋ ฌ
๋จ๋ฉด ์ ๋ ฌ์ ์ค์ ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ์น์ ์ ํญ์ ๋ค์ ์ฃผ์์์ ์์๋ฉ๋๋ค.
์ด ์ซ์์ ๋ฐฐ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0x1000์ ๋๋ค. [์ด ์ต์ ์ ํน์
๋ง์ปค์ i386 PE ๋์ ํฌํธ]
--์คํ ๋น์ถ
--์คํ ๋น์ถ,๋ฒํ๋ค
๋ค์์ผ๋ก ์ฌ์ฉํ ์์ฝ(๋ฐ ์ ํ์ ์ผ๋ก ์ปค๋ฐ)ํ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํธ ์๋ฅผ ์ง์ ํฉ๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ ์คํ. ๊ธฐ๋ณธ๊ฐ์ 2MB ์์ฝ, 4K ์ปค๋ฐ์ ๋๋ค. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น]
--ํ์ ์์คํ ์ด๋
--ํ์ ์์คํ ์ด๋:์ฃผ์ํ
--ํ์ ์์คํ ์ด๋:์ฃผ์ํ.๋ฏธ์ฑ๋ ์
ํ๋ก๊ทธ๋จ์ด ์คํ๋ ํ์ ์์คํ ์ ์ง์ ํฉ๋๋ค. ์ ๋ํ ๋ฒ์ ๊ฐ์น
์ด๋ "๋ค์ดํฐ๋ธ", "windows", "console", "posix" ๋ฐ "xbox"์ ๋๋ค. ๋น์ ์ ์ ํ์ ์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค
ํ์ ์์คํ ๋ฒ์ ๋. ์ซ์ ๊ฐ๋ ํ์ฉ๋ฉ๋๋ค. ์ด๋. [์ด ์ต์ ์
๋ง์ปค์ i386 PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
๋ค์ ์ต์ ์ PE ํ์ผ์ "DllCharacteristics" ํ๋์ ํ๋๊ทธ๋ฅผ ์ค์ ํฉ๋๋ค.
header: [์ด ์ต์ ์ ๋ง์ปค์ PE ๋์ ํฌํธ์๋ง ํด๋น๋ฉ๋๋ค.]
--๊ณ ์ํธ๋กํผ-va
์ด๋ฏธ์ง๋ 64๋นํธ ASLR(์ฃผ์ ๊ณต๊ฐ ๋ ์ด์์ ๋๋คํ)๊ณผ ํธํ๋ฉ๋๋ค.
--๋ค์ด๋๋ฏน๋ฒ ์ด์ค
์ด๋ฏธ์ง ๊ธฐ๋ณธ ์ฃผ์๋ ์ฃผ์ ๊ณต๊ฐ ๋ ์ด์์ ๋ฌด์์ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐฐ์น๋ ์ ์์ต๋๋ค.
(ASLR). ์ด ๊ธฐ๋ฅ์ i386 PE ๋์์ฉ MS Windows Vista์ ํจ๊ป ๋์ ๋์์ต๋๋ค.
--๊ฐ์ ํตํฉ
์ฝ๋ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๊ฐ ์ํ๋ฉ๋๋ค.
--nxcompat
์ด๋ฏธ์ง๋ ๋ฐ์ดํฐ ์คํ ๋ฐฉ์ง์ ํธํ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์
i2 PE ๋์์ฉ MS Windows XP SP386์ ํจ๊ป ๋์ ๋์์ต๋๋ค.
--๋ถ๋ฆฌ ์์
์ด๋ฏธ์ง๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ์ดํดํ๋๋ผ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฒฉ๋ฆฌํ์ง ๋ง์ญ์์ค.
--์๋ผ
์ด๋ฏธ์ง๋ SEH๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ์ด ์ด๋ฏธ์ง์์ SE ํธ๋ค๋ฌ๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
--๋ฐ์ธ๋ ์์
์ด ์ด๋ฏธ์ง๋ฅผ ๋ฌถ์ง ๋ง์ญ์์ค.
--wdmdriver
๋๋ผ์ด๋ฒ๋ MS Windows ๋๋ผ์ด๋ฒ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
--์ฐจ์๋
์ด๋ฏธ์ง๋ ํฐ๋ฏธ๋ ์๋ฒ๋ฅผ ์ธ์ํฉ๋๋ค.
--์ฝ์ -ํ์์คํฌํ
--no-insert-timestamp
์ด๋ฏธ์ง์ ์ค์ ํ์์คํฌํ๋ฅผ ์ฝ์ ํฉ๋๋ค. ์ด๊ฒ์ ์ผ์นํ๋ ๊ธฐ๋ณธ ๋์์ ๋๋ค.
๋ ๊ฑฐ์ ์ฝ๋์ด๋ฉฐ ์ด๋ฏธ์ง๊ฐ ๋ค๋ฅธ ๋ ์ ๋๊ตฌ์ ํจ๊ป ์๋ํจ์ ์๋ฏธํฉ๋๋ค. NS
์ด ๊ธฐ๋ณธ๊ฐ์ ๋ฌธ์ ๋ ์ฝ๊ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง๊ฐ ์์ฑ๋๋ค๋ ๊ฒ์ ๋๋ค.
๋์ผํ ์์ค๊ฐ ๋งํฌ๋ ๋๋ง๋ค ์์ฑ๋ฉ๋๋ค. ์ต์ --no-insert-timestamp
ํ์์คํฌํ์ ๋ํด XNUMX ๊ฐ์ ์ฝ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฑ๋ ๋ฐ์ด๋๋ฆฌ๊ฐ
๋์ผํ ์์ค์์ ๋์ผํ๊ฒ ๋น๊ต๋ฉ๋๋ค.
C6X uClinux ๋์์ DSBT๋ผ๋ ๋ฐ์ด๋๋ฆฌ ํ์์ ์ฌ์ฉํ์ฌ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. ๊ฐ
์์คํ ์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ๊ณ ์ ์ธ๋ฑ์ค๊ฐ ์์ด์ผ ํฉ๋๋ค. ๋ชจ๋ ์คํ ํ์ผ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
0.
--dsbt-ํฌ๊ธฐ ํฌ๊ธฐ
์ด ์ต์ ์ ํ์ฌ ์คํ ํ์ผ ๋๋ ๊ณต์ ํ์ผ์ DSBT ํญ๋ชฉ ์๋ฅผ ์ค์ ํฉ๋๋ค.
๋์๊ด ํฌ๊ธฐ. ๊ธฐ๋ณธ๊ฐ์ 64๊ฐ ํญ๋ชฉ์ด ์๋ ํ ์ด๋ธ์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
--dsbt-์ธ๋ฑ์ค ์์ธ
์ด ์ต์ ์ ํ์ฌ ์คํ ํ์ผ ๋๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ DSBT ์ธ๋ฑ์ค๋ฅผ ๋ค์์ผ๋ก ์ค์ ํฉ๋๋ค. ์์ธ.
๊ธฐ๋ณธ๊ฐ์ ์คํ ํ์ผ ์์ฑ์ ์ ํฉํ 0์ ๋๋ค. ๊ณต์ ํ๋ ๊ฒฝ์ฐ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ 0์ DSBT ์ธ๋ฑ์ค๋ก ์์ฑ๋ ๊ฒฝ์ฐ "R_C6000_DSBT_INDEX" ์ฌ๋ฐฐ์น๊ฐ
์ถ๋ ฅ ํ์ผ์ ๋ณต์ฌ๋ฉ๋๋ค.
์ด ์ดํ๋ฆฌ์ผ์ด์ ์๋ XNUMXยตm ๋ฐ XNUMXยตm ํ์ฅ์์ ์ต๋ XNUMXW์ ํ๊ท ์ถ๋ ฅ์ ์ ๊ณตํ๋ --๋ณํฉ-exidx ํญ๋ชฉ ์์ ์ค์์น๋ ์ธ์ exidx ํญ๋ชฉ์ ๋ณํฉ์ ๋นํ์ฑํํฉ๋๋ค.
ํ๋ ์ ํด์ ์ ๋ณด.
68HC11 ๋ฐ 68HC12 ๋ง์ปค๋ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ๋ฅผ ์ ์ดํ๋ โโํน์ ์ต์ ์ ์ง์ํฉ๋๋ค.
์ค์์นญ ๋งคํ ๋ฐ ํธ๋จํ๋ฆฐ ์ฝ๋ ์์ฑ.
-- ํธ๋จํ๋ฆฐ ์์
์ด ์ต์ ์ ํธ๋จํ๋ฆฐ ์์ฑ์ ๋นํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํธ๋จํด๋ฆฐ์
"jsr" ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ถ๋๋ ๊ฐ far ํจ์์ ๋ํด ์์ฑ๋ฉ๋๋ค(์ด
far ํจ์์ ๋ํ ํฌ์ธํฐ๊ฐ ์ทจํด์ง ๋ ๋ฐ์ํฉ๋๋ค).
--์ํ ์ฐฝ๊ตฌ name
์ด ์ต์ ์ ๋ง์ปค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ด๋ฆ์ ๋ํ๋ ๋๋ค. ๋ฉ๋ชจ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ ์ฐฝ์ ์ค๋ช ํ๋ ์ฌ์์ ๋๋ค. ๊ทธ๋ฌํ ์์ญ์ ์ ์๋
๊ทธ๋ฐ ๋ค์ ๋ง์ปค์์ ๋ฉ๋ชจ๋ฆฌ ์ฐฝ ๋ด์์ ํ์ด์ง ๋ฐ ์ฃผ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋งํฌํ ๋ GOT ์์ฑ ์ฒ๋ฆฌ๋ฅผ ์ ์ดํ๊ธฐ ์ํด ๋ค์ ์ต์ ์ด ์ง์๋ฉ๋๋ค.
68K ๋ชฉํ.
--์์ด=์ ํ
์ด ์ต์ ์ ๋ง์ปค์ ์ฌ์ฉํ GOT ์์ฑ ์ฒด๊ณ๋ฅผ ์๋ ค์ค๋๋ค. ์ ํ ํ๋๊ฐ ๋์ด์ผ ํ๋ค
of ๋จ์ผ, ๋ถ์ , ๋คํ์ง or ๋ชฉํ. ์์ธํ ๋ด์ฉ์ ์ ๋ณด ํญ๋ชฉ์ ์ฐธ์กฐํ์ญ์์ค.
for ld.
๋ค์ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ microMIPS ๋ช ๋ น์ด ์์ฑ์ ์ ์ดํ๊ธฐ ์ํด ์ง์๋ฉ๋๋ค.
MIPS ๋์์ ๋ํ ์ฐ๊ฒฐ.
--insn32
--no-insn32
์ด ์ต์ ์ ๋ค์์ ์ํด ์์ฑ๋ ์ฝ๋์ ์ฌ์ฉ๋๋ microMIPS ๋ช ๋ น์ด์ ์ ํ์ ์ ์ดํฉ๋๋ค.
PLT ๋๋ ์ง์ฐ ๋ฐ์ธ๋ฉ ์คํ ๋๋ ์ด์๊ณผ ๊ฐ์ ๋ง์ปค. ๋ง์ฝ์
--insn32 ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ๋ง์ปค๋ 32๋นํธ ๋ช ๋ น์ด ์ธ์ฝ๋ฉ๋ง ์ฌ์ฉํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก
๋๋ if --no-insn32 16๋นํธ๋ฅผ ํฌํจํ ๋ชจ๋ ๋ช ๋ น์ด ์ธ์ฝ๋ฉ์ด ์ฌ์ฉ๋ฉ๋๋ค.
๊ฐ๋ฅํ ๊ณณ.
ํ๊ฒฝ
์ ๋์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ld ํ๊ฒฝ ๋ณ์ "GNUTARGET"์ ์ฌ์ฉํ์ฌ
"LDEMULATION" ๋ฐ "COLLECT_NO_DEMANGLE".
"GNUTARGET"์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์ ๋ ฅ ํ์ผ ๊ฐ์ฒด ํ์์ ๊ฒฐ์ ํฉ๋๋ค. -b (๋๋ ๋์์ด
--์ฒด์ฌ). ๊ทธ ๊ฐ์ ์ ๋ ฅ ํ์์ ๋ํ BFD ์ด๋ฆ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค. ์๋ ๊ฒฝ์ฐ
ํ๊ฒฝ ์์ "GNUTARGET", ld ๋์์ ์์ฐ์ค๋ฌ์ด ํ์์ ์ฌ์ฉํฉ๋๋ค. "๊ทธ๋ํ๊ฒ"์ด๋ผ๋ฉด
"default"๋ก ์ค์ ๋๋ฉด BFD๋ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฒ์ฌํ์ฌ ์ ๋ ฅ ํ์์ ๊ฒ์ํ๋ ค๊ณ ์๋ํฉ๋๋ค.
์ ๋ ฅ ํ์ผ; ์ด ๋ฐฉ๋ฒ์ ์ข ์ข ์ฑ๊ณตํ์ง๋ง ์ ์ฌ์ ์ธ ๋ชจํธ์ฑ์ด ์์ต๋๋ค.
๊ฐ์ฒด ํ์ผ ํ์์ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋งค์ง ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
๊ณ ์ ํ. ๊ทธ๋ฌ๋ ๊ฐ ์์คํ ์ BFD์ ๋ํ ๊ตฌ์ฑ ์ ์ฐจ๋
๊ฒ์ ๋ชฉ๋ก์์ ๋จผ์ ํด๋น ์์คํ ์ ๋ํ ๊ธฐ์กด ํ์์ด๋ฏ๋ก ๋ชจํธ์ฑ์ด ํด๊ฒฐ๋ฉ๋๋ค.
ํ์ฝ์ ์ฐฌ์ฑํฉ๋๋ค.
"LDEMULATION"์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์๋ฎฌ๋ ์ด์ ์ ๊ฒฐ์ ํฉ๋๋ค. -m ์ ํ๊ถ. ๊ทธ๋งํผ
์๋ฎฌ๋ ์ด์ ์ ๋ง์ปค ๋์, ํนํ ๊ธฐ๋ณธ ๋ง์ปค์ ๋ค์ํ ์ธก๋ฉด์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ. ๋ค์์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์๋ฎฌ๋ ์ด์ ์ ๋์ดํ ์ ์์ต๋๋ค. --๋ง ์๊ฐ ๋ง์ or -V ์ต์ . ๋ง์ฝ
-m ์ต์ ์ด ์ฌ์ฉ๋์ง ์๊ณ "LDEMULATION" ํ๊ฒฝ ๋ณ์๊ฐ ์ ์๋์ง ์์ ๊ฒฝ์ฐ
๊ธฐ๋ณธ ์๋ฎฌ๋ ์ด์ ์ ๋ง์ปค๊ฐ ๊ตฌ์ฑ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ง์ปค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ธฐํธ๋ฅผ ๋๋งน๊ธ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ฝ
"COLLECT_NO_DEMANGLE"์ด ํ๊ฒฝ์ ์ค์ ๋์ด ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ๋๋ง๊ธ๋งํ์ง ์๋ ๊ฒ์ผ๋ก ์ค์ ๋ฉ๋๋ค.
๊ธฐํธ. ์ด ํ๊ฒฝ ๋ณ์๋ "gcc" ๋ง์ปค์์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๋ํผ ํ๋ก๊ทธ๋จ. ๊ธฐ๋ณธ๊ฐ์ --demangle and -- ์ํด ์์
์ต์ ์ ์ ๊ณตํฉ๋๋ค.
onworks.net ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ mips-linux-gnu-ld ์จ๋ผ์ธ ์ฌ์ฉ