์ฐ๋ฆฌ๋ Windows์์ ๋งค์ฐ ํฌ๊ทํ ๋๊ตฌ ๋ชจ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Msvc๋ "ํ์ค"์ด๋ฉฐ mingw๊ฐ ์๋ โโ๊ธฐ๋ณธ Windows ๋๊ตฌ ๋ชจ์์ ํธ์ํ Rustc๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
์ด ๋ฌธ์ ๋ Rust๊ฐ ๊ฒฐ๊ตญ C ์ฝ๋์์ ์ฐ๊ฒฐ์ ํ์ฉํ๋ ๊ฒฝ์ฐ(์ฆ, ๋ฌธ์ #1850) ๋งค์ฐ ๊ด๋ จ์ด ์์ต๋๋ค. ์ด๋ก ์ ์ผ๋ก MinGW C ๋๊ตฌ ์ฒด์ธ์ MSVC์ ABI ํธํ ๊ฐ๋ฅํ์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ผ๋ฉฐ ํนํ ์ฝ๋ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ๋ฏธ๋ฌํ๊ณ ์ ๋นํ ๋ฐฉ์์ผ๋ก ์คํจํ๊ฒ ๋ฉ๋๋ค. ๋ค์์ ๋์ค๋ ์์ ์ ๊ธด ๋ชฉ๋ก์ ๋ํด ์ ๊ฐ์ค๋ฝ๊ฒ ์๊ฐํ์ง๋ง MinGW/MSVC interop์์ ๊ฒช์๋ ๋ฌธ์ ๋ฅผ ์ค๋ช ํ๊ณ ์ถ์์ต๋๋ค.
ํ์คํ ์ด ๋ง์ง๋ง ๋ฌธ์ ๋ ํธํ๋์ง ์๋ ์ปดํ์ผ๋ฌ ๋ฒ์ (์: VS2005/VS2010)์ผ๋ก ์ปดํ์ผ๋ ๋ชจ๋ ์ฝ๋์ ์ ์ฉ๋์ง๋ง ๋ฌธ์ ๋ mingw๊ฐ MSVC์ ์ค๋๋ ๋ฒ์ ๊ณผ ์ฐ๊ฒฐ๋์ด ์ค๋๋ ์ปดํ์ผ๋๋ ์ ์ฝ๋์๋ ์ ์ฉํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค. MinGW ๋ฉ์ผ๋ง ๋ฆฌ์คํธ์์ msvcr100.dll ์์ ์ ๋ํ ํ๋์ ๋ณด์์ผ๋ฏ๋ก ๊ณง ์ฌ๋ผ์ง ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ MinGWs ๋๊ตฌ ์ฒด์ธ๊ณผ ํจ๊ป MS ๋๊ตฌ ์ฒด์ธ์ผ๋ก ๊ตฌ์ถ๋ ์ ์ /๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ง์ ๋ฒ๊ฑฐ๋ก์๊ณผ ๋ถ๊ฐ๋ฅ ์ฌ์ด์ ์ด๋๊ฐ์ ์์ต๋๋ค. .c ์ฝ๋(์: #1850)๋ฅผ MSVC๋ก ์ปดํ์ผํ ๋ค์ llvm์ ์ํด ์์ฑ๋ rustc ๊ฐ์ฒด์ ์ฐ๊ฒฐํ๋ฉด ์ด๋ฌํ ๋ฒ๊ฑฐ๋ก์์ด ์ค์ด๋ค ๊ฒ์ ๋๋ค.
llvm์ ๋ํ ๊ฒฝํ์ด ๊ฑฐ์ ์์ผ๋ฏ๋ก LLVM์ ABI(๋ น ๊ฐ์ฒด์ ์ฌ์ฉ๋จ)๊ฐ MSVC์ ์ผ๋ง๋ ํธํ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Intel์ ์ปดํ์ผ๋ฌ(icc)๊ฐ MSVC๋ก ๋น๋๋ .lib/.def/.dll์ ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ํธํ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. llvm์ด cl.exe/link.exe์ ํจ๊ป icc๋งํผ ํธํ๋๋ ๊ฒฝ์ฐ Rustc๋ ์ด๋ฌํ ์ด์ ์ ์์ํฉ๋๋ค.
๋๋ mingw๊ฐ "์๋์ฐ์์ ๋งค์ฐ ๋๋ฌธ ๋๊ตฌ ์ฒด์ธ"์ด๋ผ๋ ๋ฌด์์ ๊ฐ์ ์ ๋ํด ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค.
์ฌ์ค:
equation.com์ scilab์ฉ mingw ๋๊ตฌ ์ฒด์ธ์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
mingw-w64๋ ์กฐ์ ๋ฐ ๊ฐ์
Google go๋ mingw๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค.
ReactOS๋ mingw ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค.
์๋ง์ FOSS ํ๋ก์ ํธ๊ฐ mingw๋ฅผ ์์ฉํฉ๋๋ค.
์ฃผ์์ด ๋ฌดํจ์์ ์ฆ๋ช ํฉ๋๋ค. ๋ด ์์ ์ ์ํด mingw๋ ์ค์ํ์ง๋ง ๋ น์ ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ mingw๋ ๋ น์ ํ์ํ๊ณ ํฅํ ์ ํ์ ๋ํด ๊ณ ๋ คํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. Mozilla๊ฐ Visual Studio๋ฅผ ์์ฉํ๋ค๋ ์ฌ์ค์ด VS๊ฐ ๋ฐ๋์ ์ ์ผํ ์ต์ ์์ ์ฆ๋ช ํ์ง๋ ์์ต๋๋ค. ํฌ๋กฌ์ ๋ฐ๋ก์ ๋๋ค. mingw์ VS์ ์ํธ ์ด์ฉ์ฑ ๋ถ์กฑ๋ _๊ฐ์ธ์ ์ผ๋ก_ ํฐ ๋ฌธ์ ๋ก ์๊ฐํ์ง ์๋ ๊ฒ์ ๋๋ค.
Mingw๋ ๋ง์ ์คํฌ๋ฆฝํ ์ธ์ด, FreePascal/Mono/D ๋ฐ Go์ ๊ฐ์ ๋ง์ ์์ ํ ์ธ์ด์ ์ํธ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ด์ ๊ด๋ จํ์ฌ VS์ ํจ๊ป mingw๋ฅผ ์ ์งํ๊ฑฐ๋ mingw๋ฅผ ์ ์งํ๊ณ clang+mingw ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ๊ณ ์ถ์ต๋๋ค.
๋ฌธ์ : jemalloc์๋ mingw๊ฐ ํ์ํฉ๋๋ค.
Firefox๋ MSVC๊ฐ ์๋ Windows์์ jemalloc์ ์ฌ์ฉํฉ๋๋ค. http://glandium.org/blog/?p=2581
jemalloc์ ํ์คํ MSVC๋ฅผ ์ง์ํ์ง๋ง ์ ์ฒด ํ๋ก์ธ์ค์ ๋ํ drop-in malloc/free ๊ต์ฒด ์ญํ ์ ์ง์ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. je_
์ ๋์ฌ๋ก ์ปดํ์ผํ๊ณ ํธ์ถ์ ์ ํํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด malloc/free์ ๋ํ LLVM์ ํ๋์ฝ๋ฉ๋ ์ต์ ํ๊ฐ ์์ค๋์ง๋ง ๊ทธ ์ธ์๋ ๋ง์ง ์์ต๋๋ค.
@thestinger ์ค์ ๋ก ๋ณด์ด๋ ๊ฒ์ฒ๋ผ ํ๋ ์ฝ๋ฉ๋์ง ์์์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ ๋ชฉ๋ก๊ณผ ํจ์ ์ ๋ฌ์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ณด๊ฐ ์์ต๋๋ค. LLVM์ด ์ผ๋ฐ ํธ์ถ๊ณผ ๋์ผํ je_ ์ ๋์ฌ ๋ฒ์ ์ ๋ํ ์ต์ ํ๋ฅผ ์ํํ ์ ์๋๋ก ์ ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋๋ก ํ์ฅํ ์ ์์ด์ผ ํฉ๋๋ค.
@Aatch : ๊ทธ ์ด์์
๋๋ค - free
๋ฐ malloc
์ ๊ด๋ จ๋ ํน์ ์ต์ ํ๊ฐ ์์ต๋๋ค.
http://llvm.org/docs/doxygen/html/InstructionCombining_8cpp_source.html#l01378
http://llvm.org/docs/doxygen/html/Local_8cpp_source.html#l00269
๋ฒ๊ทธ ๋ถ๋ฅ๋ฅผ ์ํด ๋ฐฉ๋ฌธ, 2013-08-05์ ์ด๋ฉ์ผ
fdim
์ ๊ฐ์ ์ผ๋ถ c99 ํจ์๋ฅผ ์ฌ์ฉํ์ง๋ง msvcrt ๋ฐํ์์๋ ์์ต๋๋ค. #8663์ mingw/mingw-w64๊ฐ ์๋์ผ๋ก ๊ตฌํํจ์ ๋ํ๋ด๋ฏ๋ก msvc์ ๊ฒฝ์ฐ ์ผ๋ถ๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ mingw๊ฐ "์๋์ฐ์์ ๋งค์ฐ ๋๋ฌธ ๋๊ตฌ ์ฒด์ธ"์ด๋ผ๋ ๋ฌด์์ ๊ฐ์ ์ ๋ํด ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค.
์ฌ์ค:
equation.com์ scilab์ฉ mingw ๋๊ตฌ ์ฒด์ธ์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
mingw-w64๋ ์กฐ์ ๋ฐ ๊ฐ์
Google go๋ mingw๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค.
ReactOS๋ mingw ํ๊ฒฝ์ ์ฌ์ฉํฉ๋๋ค.
์๋ง์ FOSS ํ๋ก์ ํธ๊ฐ mingw๋ฅผ ์์ฉํฉ๋๋ค.
์ฃผ์์ด ๋ฌดํจ์์ ์ฆ๋ช ํฉ๋๋ค. ๋ด ์์ ์ ์ํด mingw๋ ์ค์ํ์ง๋ง ๋ น์ ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ mingw๋ ๋ น์ ํ์ํ๊ณ ํฅํ ์ ํ์ ๋ํด ๊ณ ๋ คํ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค. Mozilla๊ฐ Visual Studio๋ฅผ ์์ฉํ๋ค๋ ์ฌ์ค์ด VS๊ฐ ๋ฐ๋์ ์ ์ผํ ์ต์ ์์ ์ฆ๋ช ํ์ง๋ ์์ต๋๋ค. ํฌ๋กฌ์ ๋ฐ๋ก์ ๋๋ค. mingw์ VS์ ์ํธ ์ด์ฉ์ฑ ๋ถ์กฑ๋ _๊ฐ์ธ์ ์ผ๋ก_ ํฐ ๋ฌธ์ ๋ก ์๊ฐํ์ง ์๋ ๊ฒ์ ๋๋ค.
Mingw๋ ๋ง์ ์คํฌ๋ฆฝํ ์ธ์ด, FreePascal/Mono/D ๋ฐ Go์ ๊ฐ์ ๋ง์ ์์ ํ ์ธ์ด์ ์ํธ ์ด์ฉ ๊ฐ๋ฅํฉ๋๋ค. ์ด์ ๊ด๋ จํ์ฌ VS์ ํจ๊ป mingw๋ฅผ ์ ์งํ๊ฑฐ๋ mingw๋ฅผ ์ ์งํ๊ณ clang+mingw ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ๊ณ ์ถ์ต๋๋ค.