๋ด ์์คํ ์์ ์ค์ํ์ ์์ธ์ ์กฐ์ฌํด ์์ผ๋ฉฐ ๋์ ์ฝ๋์์ ์ด ์กฐ๊ฐ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
Ninja๋ Android ๋น๋ ์์คํ ์์ ์ฌ์ฉ๋๋ฉฐ ๋ง์ Android ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ๋ด ์์คํ ์ ์ฌ์ฉ์ฑ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ ํ์ฌ PC์๋ ์ต๋ 8๊ฐ์ ์ค๋ ๋๊ฐ ์๋ 4์ฝ์ด CPU๊ฐ ์๊ณ , ๊ฐ์ ์ฉ PC์๋ ์ต๋ 16๊ฐ(!!) ์ค๋ ๋๊ฐ ์๋ 8์ฝ์ด CPU๊ฐ ์์ต๋๋ค. ๋ ๋ค 8GB์ RAM์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋งํ ํ์๋ ์์ด, ๋์ ์ปดํ์ผ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น ๋ฅด๊ฒ ๋น์ถํ๊ณ ๋ง์ ์์ ์ค์ํ์ ์ ๋ฐํฉ๋๋ค.
ํ์ฌ ๋์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ ์์ด CPU ์์ "์ผ์นํ์ง" ์๋ ๊ฒฝ์ฐ OS ๋ฆฌ์์ค๋ฅผ ์ฝ๊ฒ ๊ณ ๊ฐ์ํฌ ์ ์๋ CPU+2 ์ค๋ ๋๋ฅผ ํ ๋นํฉ๋๋ค. ์ด๋ฐ ์ข ๋ฅ์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๊ฑฐ์ ์์ง๋ง ๋๋ถ๋ถ์ ๊ณ ์ ์์ฐ์ ์ฒ๋ฆฌํ๊ณ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋๋ก ์ต์ ํ๋ ๊ฒ์์ ๋๋ค. Ninja๋ ์ธ๋ถ ๋ฐ์ดํฐ(์ํํธ์จ์ด ์์ค ์ฝ๋)๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ ๊ทธ ์ค ์ผ๋ถ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋งค์ฐ ๋ง์ต๋๋ค(์: C++). ์ด๊ฒ์ ํ์คํ ์ข์ง ์์ต๋๋ค . ํ์ฌ CPU ์ถ์ธ๊ฐ ๊ณ์๋๋ค๋ฉด ๊ณง 64๊ฐ ์ด์์ ์ฝ์ด๊ฐ ์๋ ์๋น์ ๋์ ์ปดํจํฐ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค. ํ์ฌ RAM ์ถ์ธ๊ฐ ๊ณ์๋๋ฉด ํด๋น ์ปดํจํฐ์ ๋๋ถ๋ถ์ RAM์ด ์ผ์นํ์ง ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ฌ ์ปดํ์ผ์ ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ๋ ผ์๋ฅผ ๋ณด์์ต๋๋ค. ๋๋ ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๊ฒ์ ๋ํด ์ ๊ฒฝ ์ฐ์ง ์์ต๋๋ค. ๋๋ถ๋ถ์ ํ๋ก์ ํธ์๋ ์์ธก ๊ฐ๋ฅํ ์ปดํ์ผ ๊ณต๊ฐ์ด ์์ต๋๋ค.
๋์ ๋์๊ฐ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ ์ธ ์จ์ ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ์์คํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ ํํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ค์น๋ CPU ์ค ์ผ๋ถ์ ๊ฐ๊ฐ ์ต์ 1Gb์ RAM์ด ์๋ ๊ฒฝ์ฐ ํด๋น CPU๋ฅผ ๊ธฐ๋ณธ ๋ณ๋ ฌ ์ฒ๋ฆฌ ์ค์ ์ ํฌํจํ์ง ๋ง์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด CPU๊ฐ 4๊ฐ ๋ฏธ๋ง์ธ ๋๋ถ๋ถ์ ์์คํ ๊ณผ ์ํฐํ๋ผ์ด์ฆ Xeon ๋น๋ ์๋ฒ์ ๋ํด ๋ณ๋ ฌ ์์ ์๋ฅผ ๊ฑฐ์ ๋์ผํ๊ฒ ์ ์งํ๋ฉด์ RAM ์์ด ํ์ ์์คํ ์ ๋ํด ๋ณด๋ค ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
ninja๋ ์คํ๋๋ ํ๋ก์ธ์ค์ ๋ํด ์์ง ๋ชปํฉ๋๋ค. ๋ํ ํ๋ก์ธ์ค๊ฐ ํ๋์ CPU ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ด ๋๋ถ๋ถ์ ๊ฑด๋ฌผ์ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ ์๋น๋ ๋ช
๋ น ๊ฐ์ ํฌ๊ฒ ๋ค๋ฅด๋ฉฐ(์: ๊ฐ๋จํ Python ์คํฌ๋ฆฝํธ ๋ ๋ํ ๊ฐ์ฒด ์ฐ๊ฒฐ) ์ด๋ฌํ ๋ช
๋ น์ ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ํ ๊ณตํต๋ ๊ฐ์ ์ ๊ฐ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์๋ชจ ํ๋ก์ธ์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ ์ดํ๋ ค๋ฉด ๋น๋์ ๋ฉ๋ชจ๋ฆฌ ํํ๋ฆฐํธ๋ฅผ ์ ์๊ณ ์์ ๋ ๋ ๋ฎ์ -j๋ฅผ ์ง์ ํ๊ฑฐ๋ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
https://ninja-build.org/manual.html#ref_pool
ํ๋ก์ธ์ค๊ฐ ํ๋์ CPU ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ด ๋๋ถ๋ถ์ ๊ฑด๋ฌผ์ ๊ฐ์ฅ ์ ํฉํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
RAM์ ์ด๋๋ ๊ณ ๋ คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ๋ ๋๋ผ์ด๋ธ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ค์ ์ฑ๋ฅ์ ๋์์ด ๋์ง ์์ต๋๋ค.
๋ฉ๋ชจ๋ฆฌ ์๋น ํ๋ก์ธ์ค์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ ์ดํ๋ ค๋ฉด ๋ ๋ฎ์ -j๋ฅผ ์ง์ ํ๊ฑฐ๋ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ๋ Android NDK ๋น๋ ์์คํ ์ ๊ฐ๋ฐ์๊ฐ ์๋๋ฏ๋ก ninja ๋ช ๋ น์ ๋ช ๋ น์ค ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ต๋๋ค. โ Android ๋น๋ ์์คํ ์ ๊ทธ๋ ์ต๋๋ค.
ํ๊ฒฝ ๋ณ์ MAKEFLAGS="-j4"๋ฅผ ์ค์ ํ์ง๋ง(๋๋ถ๋ถ์ make ๊ธฐ๋ฐ ๋น๋ ์์คํ ์์ ์ด๋ฅผ ์ค์ํจ) ๋์๋ ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
gradle์์ cmake๋ฅผ ํตํด ์ง์ ninja์ ์ธ์๋ฅผ ์ ๊ณตํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ๋ณผ ์ ์๋ฏ์ด gradle์ cmake ํตํฉ ์๋ arguments
ํ๋๊ฐ ์์ต๋๋ค. ์ด์ฉ๋ฉด ์ด๊ฒ์ด ํจ๊ณผ๊ฐ ์์๊น์?
@jimon
๋น์ ์ด ๋๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ๊ทธ๊ฒ ์์ ์ด ์๋๋๋ค.
๋ด ์ ์ฅ:
1) make ๋ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๋ฉฐ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ๋ ํฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์ ํํ ์ ์์ต๋๋ค.
2) ๋์๋ ์์ ํ์ง ์์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ผ๋ถ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ฉด ๋ด ์์คํ
์ด ์ค๋จ๋ ๊น ํญ์ ๋๋ ค์ํฉ๋๋ค(๋น๋ํ๊ธฐ ์ ์ ๊ฐ ์์์ AUR ์ํํธ์จ์ด์์ ์ด๋ค ๋น๋ ์์คํ
์ ์ฌ์ฉํ๋์ง ํ์ธํ๊ณ ์ถ์ง ์์ต๋๋ค!). ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ ์ญ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ ๋์์.
@Alexander-- , (์ค์ ํ์ผ ๋๋ ๋ค๋ฅธ ์๋จ์ ํตํด) ๊ฐ์ง๊ณ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ RAM์ ํ ๋นํ๋ ๋จ์ผ ์คํ ํ์ผ(์ปดํ์ผ๋ฌ ๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ด ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ํด๋น ์ฑ๊ณผ ๋น์ฌ๋ผ๋ง ์คํํ๋ ๋น๋ ์์คํ ์ด ์์ต๋๋ค. ์์คํ ์ด ์๋ตํ์ง ์์ต๋๋ค. ์ด ์ ์ ์ ์๋ฅผ ํตํด ์ด ๋ฌธ์ ๋ ์ ๋์ ์ผ๋ก ํด๊ฒฐํ ์ ์์์ด ๋ถ๋ช ํฉ๋๋ค. ์ด์ ์คํ ํ์ผ์ด ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒฝ์ฐ๋ฅผ ์์ํด ๋ด ์๋ค. ๋์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ํ ์ฌ์ ์ง์์ด ์์ผ๋ฉฐ RAM์ด ์ค์ ๋ก ์ฌ๋ผ์ง ํ์์ผ ๋น๋ก์ ๋ช ๋ฐฑํด์ง ๊ฒ์ ๋๋ค. ๋ฌธ์ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ผ๋ฉฐ ํ๋ก์ ํธ์ ๋ฒ์๊ฐ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
make๊ฐ ๋ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ๋ ๊ฒ์ ๊ดํด์๋ - ๊ฐ๋ฐ์๊ฐ make์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ธ์ํ์ง ๋ชปํ๊ฑฐ๋ ๊ท์ฐฎ๊ฒ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ง๋ ๋ง์ ๊ฐ๋ฐ์ ์๊ฐ์ด ๋ญ๋น๋๋์ง ์์ํ ์ ์์ต๋๋ค. ์ ๋ ๋๋ฃ๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ ์ค๋ ๋์์ ๋น๋ํ๋ ๊ฒ์ ์ธ์ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ช ๋ถ ๋๋ ๋ช ์๊ฐ์ ๋ญ๋นํ๋ ๊ฒ์ ๋์์์ด ๋ด ๋๋ค.
๋๋ ๋น์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ฐ๋ํ๊ณ ์ถ์ง ์์ผ๋ฉฐ ๊ฑฐ์น ๊ฒ ๋ค๋ฆฌ๊ณ ์ถ์ง ์์ต๋๋ค. :) ๊ทธ๋ฌ๋ ๊ฐ์ฅ ์ต์ ์ ์๋ฃจ์ ์ gradle ๋์์ ๋ฌด์ํ๊ณ ๊ณ์ ์งํํ๋ ๊ฒ์ ๋๋ค. ํ๋ก์ ํธ/์ปดํจํฐ์ ๋งค์ฐ ๊ณ ์ ํ๊ณ ๋ ํฐ ๊ท๋ชจ๋ก ํ์๋์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ค Android ๋น๋ ์์คํ ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? NDK๋ก Android ์ฑ์ ๋น๋ํ์๊ฒ ์ต๋๊น? ์๋๋ฉด ์ ์ฒด ํ๋ซํผ(ROM)์ ๋น๋ํ์๊ฒ ์ต๋๊น?
Ninja + Gradle + Jack = ์ง์ฅ. (์ต์ 16GB RAM์ ์ฐจ์งํจ)
์ ํํ ์ด๋์ ๋ฌธ์ ๊ฐ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฃผ์ ๋ฌธ์ ๋ jack-server๋ฅผ ์ฌ์ฉํ๋ Java ๋น๋์์ ๋น๋กฏ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ ์ค์ํ ๊ฒ์ Ninja(from Soong)๊ฐ ๋ชจ๋ ๋ ๊ฑฐ์๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋๋ฌด ๋ง์ ์์ ์ํํธ์จ์ด๋ฅผ ๋์
ํ๋ฏ๋ก ๋น๋ ์์คํ
์์ ๊ธธ์ ์๊ณ ๋ฌธ์ ์ ์๋ฃจ์
์ ์ฐพ์ ์ ์๋ค๋ ๊ฒ์
๋๋ค.
์์ ๋ฉ์ดํฌ๊ฐ ๊ทธ๋ฆฌ์ ์ด์. ์ด ์ง์ฅ์์ ์ ๋ฅผ ๊บผ๋ด์ฃผ์ธ์.
์ด "No Jack ์๋ฒ๊ฐ ์คํ ์ค์
๋๋ค. 'jack-admin start-server'๋ฅผ ์ฌ์ฉํด ๋ณด์ธ์'"๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์์์ผ ํฉ๋๋ค.
@atetubou ๋ฅผ ๋ค์ ํํํ์๋ฉด CPU์ 64๊ฐ์ ์ฝ์ด๊ฐ ์๋ ๊ฒฝ์ฐ 64๊ฐ์ ํ๋ก๊ทธ๋จ์ ๋ณ๋ ฌ๋ก ์คํํ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ์ด ๊ฐ์ ์ด ๋ฌธ์ ๊ฐ ๋๋ ์ด์ ๋ ์ปดํ์ผ ์์ ์ด ์ผ๋ฐ ํ๋ก๊ทธ๋จ๋ณด๋ค ์ปค ๋ณด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. Ninja์๋ 'ํ' ๊ธฐ๋ฅ์ ํตํด ์ด ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ํด๋น ๋ฌธ์ ์น์ ์ ์ฝ์ผ๋ฉด ์ ํํ ์ด ๋ฌธ์ ๋ฅผ ์ํด ์ค๊ณ๋์์์ ์ ์ ์์ต๋๋ค. https://ninja-build.org/manual.html#ref_pool
๋๋ ๋น์ ์ ๋ฌธ์ ์ ๊ณต๊ฐํ์ง๋ง Ninja๊ฐ ๊ทธ๊ฒ์ ํด๊ฒฐํ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋ณด์ง ๋ชปํฉ๋๋ค. ์ด RAM ์์ "๊ณ ๋ คํด์ผ" ํ๋ค๊ณ ๋งํ์ง๋ง ์ด๋ค ์ข ๋ฅ์ ๊ณต์์ ์ฌ์ฉํ ์ ์์ต๋๊น?
@av930 ์ญ์ P์์ ์ฌ๋ผ์ง๊ณ O ๋น๋์์ ๋นํ์ฑํ๋ ์ ์์ต๋๋ค. O ๋น๋์์ ์ญ ์ฌ์ฉ์ ์ ๊ฑฐํ์ผ๋ฉฐ 12๊ธฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ 8์ฝ์ด๋ 16๊ฐ ์ด์์ ์ค๋ ๋๋ก ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ninja๊ฐ ๋น๋ ์ค์ ์ฌ์ฉํ๋ ์ธ์๋ฅผ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค. ๋ฌธ์ ๋ ๋์๊ฐ ์๋๋ผ ์ญ์ ๋๋ค.
๋ํ ์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๋์์ด ๋ ์ ์์ต๋๋ค. https://github.com/ninja-build/ninja/pull/1399
์ธ์์! ๊ฐ์ฌํฉ๋๋ค. ์๋ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก 16GRAM ๋จธ์ ์์ AOSP ์ ์ฒด ๋น๋๋ฅผ ์๋ฃํ์ต๋๋ค.
์ญ ๋นํ์ฑํ: ANDROID_COMPILE_WITH_JACK := build/make/core/javac.mk์์ false
์ด๊ฒ์ ๋ก๊ทธ์
๋๋ค.
[ 99% 101694/101695] ์์คํ
fs ์ด๋ฏธ์ง ์ค์น: out/target/product/taimen/system.img
out/target/product/taimen/system.img+ maxsize=2740531200 blocksize=135168 total=1076289888 reserve=27709440
[100% 101695/101695] ๋์ vbmeta ์ด๋ฏธ์ง: out/target/product/taimen/vbmeta.img
n
์คํ ์ค์ธ ํ๋ก์ธ์ค ๊ทธ๋ฃน์ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ํฉ์์ ์ต๋ n-1
ํ๋ก์ธ์ค๋ฅผ ์ผ์ ์ค๋จํด๋ ๋๋ค๊ณ OS์ ์๋ ค์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด Linux์์ cgroup์ผ๋ก ๋ฌ์ฑ๋ ์ ์๋์ง ์๋ ์ฌ๋์ด ์์ต๋๊น?
์ค์ ๋ก ๋ฉ๋ชจ๋ฆฌ ์ ํ์ ๊ตฌํํ๋ ๋ ๊ฐ์ PR์ด ์์ต๋๋ค: #1354 ๋ฐ #660. ํ์์ ๋ ผ์๋ ํฅ๋ฏธ๋กญ๋ค.
์ด๊ฒ์ ๋๋ถ๋ถ Android ๋น๋๊ฐ ํ์ ์ญ์ ๋ฃ์ง ์์ ๋์๋ฅผ ์๋ชป ์ก๊ณ ์๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
@๋์ฝ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํน์ Ninja ๋ฒ์ ์ ์ง์ ํด ์ฃผ์๊ฒ ์ต๋๊น? AUR์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋น๋ํ ๋๋ง๋ค ๊ธฐ๋ณธ์ ์ผ๋ก Ninja๊ฐ ๋๋ฌด ๋ง์ ๋ณ๋ ฌ ์์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ ํ ๋ณด๊ณ ์์ต๋๋ค. Ninja๋ ์ฌ์ฉ ๊ฐ๋ฅํ RAM ์์ ๊ด๊ณ์์ด 16์ฝ์ด ๋จธ์ ์์ 18์ค๋ ๋๋ฅผ ์์ฑํ๋ ค๊ณ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
Ninja๋ ์ฌ๊ธฐ์ ์๋ฌด ๊ฒ๋ ํ์ง ์์ต๋๋ค. ๋ง์ RAM(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ด ํ์ํ ๊ฒ์ด ์ ์ ํ ํฌ๊ธฐ์ ํ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ ์์ฑ๊ธฐ์ ๋ฌ๋ ค ์์ต๋๋ค.
๋ง์ RAM(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ด ํ์ํ ๊ฒ์ด ์ ์ ํ ํฌ๊ธฐ์ ํ์ ์๋์ง ํ์ธํ๋ ๊ฒ์ ์์ฑ๊ธฐ์ ๋ฌ๋ ค ์์ต๋๋ค.
์ด๊ฒ์ ๋น์ ์ ๊ฐ์ธ์ ์ธ ์๊ฒฌ์ ๋๊น, ์๋๋ฉด Ninja ๊ฐ๋ฐ์์ ๊ณต์ ์ ์ฅ์ ๋๊น? ๋ฌธ์ ์์๋ ๊ทธ๋ฌํ ์ฑ ์์ ๋ํด ์ธ๊ธํ ์ ์ด ์์ผ๋ฉฐ ์ค์ ๋ก Ninja ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๊ฐ์ญํ๋ ์์ฑ๊ธฐ์ ๋ํด์๋ ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค.
์ด๋ ์ชฝ์ด๋ , ์์ฑ๊ธฐ ์์ฑ์๋ ์คํํ ๋ณ๋ ฌ ํ๋ก์ธ์ค ์๋ฅผ ์ ํํ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ์์น์ ์์ง ์์ต๋๋ค. ์ด๋ buildserver ๊ด๋ฆฌ์๊ฐ ๊ฐ์ฅ ์ ๊ฒฐ์ ํฉ๋๋ค.
์ฌ์ฉ๋ ์์ฑ๊ธฐ์ ๊ด๊ณ์์ด ์๋ํ๋ Ninja ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ฎ์ถ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์์ผ๋ฉฐ ์ ๋ ์์ด์๋ ์ ๋ฉ๋๋ค. ๋๋ ๋์ํ์ง ์๋๋ค. ํด๋น ๊ธฐ๋ฅ์ ๊ฐ์ง ๋น๋ ๋๊ตฌ(์: GNU Make)๊ฐ ์์ผ๋ฏ๋ก ์ด๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ์ ๋ก๊ฐ ์ด๋ฏธ ์์ต๋๋ค.
๋ฌธ์์์๋ ๊ทธ๋ฌํ ์ฑ ์์ ๋ํด ์ธ๊ธํ ์ ์ด ์์ผ๋ฉฐ ์ค์ ๋ก Ninja ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ๊ฐ์ญํ๋ ์์ฑ๊ธฐ์ ๋ํด์๋ ๋ค์ด๋ณธ ์ ์ด ์์ต๋๋ค.
RAM์ ๋ํด ๋ช ์์ ์ผ๋ก๋ ์๋์ง๋ง:
"๋น๋ ์ ์ฌ์ฉ์ ์ ์ ๋น๋. ์ต์ ์ ๋์ ํ์ผ์ ์์ฑํ๋ ํ๋ก๊ทธ๋จ์ ์ํฉ๋๋ค."
"Ninja์๋ ๊ธฐ๋ฅ์ด ๊ฑฐ์ ์์ต๋๋ค. ๋น๋๋ฅผ ์์ ํ๋ ๋ฐ ํ์ํ ๊ธฐ๋ฅ๋ง ์์ผ๋ฉด ๋๊ณ ๋์ ์ ๋ ฅ ํ์ผ์ ์์ฑํ๋ ๋ฐ ๊ฐ์ฅ ๋ณต์กํฉ๋๋ค."
์ฌ์ฉ๋ ์์ฑ๊ธฐ์ ๊ด๊ณ์์ด ์๋ํ๋ Ninja ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋ฎ์ถ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์์ผ๋ฉฐ ์ ๋ ์์ด์๋ ์ ๋ฉ๋๋ค.
-j
๋ฐ -l
ํ๋๊ทธ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
AUR์์ ๋ฌด์ธ๊ฐ๋ฅผ ๋น๋ํ ๋๋ง๋ค ๊ธฐ๋ณธ์ ์ผ๋ก Ninja๊ฐ ๋๋ฌด ๋ง์ ๋ณ๋ ฌ ์์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ์ ํ ๋ณด๊ณ ์์ต๋๋ค.
AUR์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ํํ ๋ชจ๋ฅด์ง๋ง ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ /usr/local/bin
์ ๋ฃ๊ณ chmod +x /usr/local/bin/ninja
๋ฅผ ํตํด ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊น์?
#!/usr/bin/env python3
import sys
import subprocess
try:
subprocess.check_call(['/usr/bin/ninja', '-j1'] + sys.argv[1:])
except subprocess.CalledProcessError as e:
exit(e.returncode)
-j1
๋ ์ฒซ ๋ฒ์งธ ์๋ต์์์ ๊ฐ์ด ์ธ๊ธ๋ ์ ์์ต๋๋ค.
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ง์ ๋ด๋ถ external_projects๋ฅผ ํ๋ณดํ ์ด ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. ์ฆ, ๊ณตํต makefile์ด ์ฌ์ฉํ๋ ๋์ ๋น๋ ๋์ ์ ์ ์ผ๋ก ๋น๋ํ๋ฏ๋ก ๋น๋๋๋ ์์ฒด ํ๋๊ทธ์ ์์ค๊ฐ ์์ต๋๋ค.
์ค๋๋ ์ด ๊ตฌํ ๋
ธํธ๋ถ์์(์ด ์์คํ
์์ ๋์๋ฅผ ์ฌ์ฉํ ์ ์ด ์์) ์ฝ์ด i7(8 ์ค๋ ๋)์ด ์๋ 4GB Windows 7 ์์คํ
์ผ ๋ฟ์
๋๋ค. ๋น๋๋ฅผ ์์ํ์ ๋ ์ ์ฒด ์์คํ
์ด ๋์คํฌ์์ ๊ตํ๋๋ ๋์ 30๋ถ ๋์ ํฌ๋กค๋ง๋์์ต๋๋ค.
๋ฐ์ด์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
C:/general/build/mingw64-x64/sack/RelWithDebInfo_out/core/include/SACK/stdhdrs.h:259:24: fatal error: C:/general/build/mingw64-x64/sack/RelWithDebInfo_out/core/include/SACK/loadsock.h: Invalid argument
compilation terminated.
ํ์ผ์ ํฌํจํ๋ ๊ฒ์ด ์๋ชป๋ ์ธ์์ธ ์ด์ ๋ ๋ฌด์์
๋๊น? ํ์ผ์ด ์กด์ฌํฉ๋๋ค....
๊ทธ๋์ ์ ์ฒด ๋น๋๊ฐ ์๋ฃ๋์์ง๋ง ๋ง์ ๋์์ ์ฑ๊ณต์ ์ผ๋ก ๋น๋ํ์ง ๋ชปํ์ต๋๋ค...
๋ด๊ฐ ์ง๊ธ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋
ninja -j1 -v install
๋ด๋ถ ๋์ ํ๋ก์ธ์ค๋ ์ฌ์ ํ -j8์ ์ฌ์ฉํฉ๋๋ค.
๋น๋๋ ๊ฐ๊ฐ -j8์ ์ฌ์ฉํ์ฌ 8๊ฐ์ ์ธ๋ถ ํ๋ก์ ํธ๋ฅผ ์์ํ ์ฒซ ๋ฒ์งธ์์ -j8์ด ๋์๊ธฐ ๋๋ฌธ์ -j64๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ๋๊น์ง ์ต๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค...
์ด ๊ฒฝ์ฐ ์์ ์๋ฒ ์ง์์ด ๋์์ด ๋ ์ ์์ต๋๋ค. #1139
๋ ๋ฆฝ์ ์ธ Ninja ๋น๋ ์ธ์ด ์ฌ๊ตฌํ https://github.com/michaelforney/samurai ๋ ํ๊ฒฝ ๋ณ์ SAMUFLAGS๋ฅผ ํตํด ์ด๋ฅผ ์ง์ํฉ๋๋ค. ๋์๋ฅผ ์ฌ์ฉํ๋ ค๋ ๋ชจ๋ ๊ณณ์์ samu๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์์คํ /usr/bin/ninja๋ก samu๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค(์ผ๋ถ Linux ๋ฐฐํฌํ์๋ ์ด ๊ฒฝ์ ๊ตฌํ์ ๊ธฐ๋ณธ ๋๋ ๋์ ์ ์ฉ์ผ๋ก ์ค์นํ๋ ์ต์ ์ด ์์ต๋๋ค).
์ปค๋ฎค๋ํฐ/์ฌ๋ฌด๋ผ์ด๋ฅผ ๋์ ์ฌ์ฉํ๋ ค๋ฉด ๋์๋ก ๋น๋ํ๋ AUR ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@jimon
๋น์ ์ด ๋๊ณ ์ถ์ดํ๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง ๊ทธ๊ฒ ์์ ์ด ์๋๋๋ค.
๋ด ์ ์ฅ:
1) make ๋ ์์ ํ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๋ฉฐ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ๋ ํฐ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์ ํํ ์ ์์ต๋๋ค.
2) ๋์๋ ์์ ํ์ง ์์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ผ๋ถ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ฉด ๋ด ์์คํ ์ด ์ค๋จ๋ ๊น ํญ์ ๋๋ ค์ํฉ๋๋ค(๋น๋ํ๊ธฐ ์ ์ ๊ฐ ์์์ AUR ์ํํธ์จ์ด์์ ์ด๋ค ๋น๋ ์์คํ ์ ์ฌ์ฉํ๋์ง ํ์ธํ๊ณ ์ถ์ง ์์ต๋๋ค!). ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์ ์ญ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ ๋์์.