OpenWrt build system About - Leo-Mun/UROP_SDN GitHub Wiki
OpenWrt's build system β About
OpenWrt λΉλ μμ€ν μ μ¬μ©μκ° μλ² λλ μμ€ν μμν ν¬λ‘μ€ μ»΄νμΌ ν΄ μ²΄μΈκ³Ό λ£¨νΈ νμΌ μμ€ν μ μ½κ² μμ± ν μ μλλ‘νλ Makefile λ° ν¨μΉ μΈνΈμ λλ€. ν¬λ‘μ€ μ»΄νμΌ ν΄μ²΄μΈμ μμ C νμ€ λΌμ΄λΈλ¬λ¦¬ μΈ muslμ μ¬μ©ν©λλ€.
μ»΄νμΌ ν΄μ²΄μΈμ μμ€ν μ© μ½λλ₯Ό μ»΄νμΌνλ λ° μ¬μ©λλ λꡬ μΈνΈμ λλ€. ꡬμ±μ λ€μκ³Ό κ°μ΅λλ€.
μ»΄νμΌλ¬ (μ°λ¦¬μ κ²½μ° gcc / deb : gcc) μ΄μ λΈλ¬μ λ§μ»€μ κ°μ λ°μ΄λ리 utils (μ°λ¦¬μ κ²½μ° binutils / deb : binutils) C νμ€ λΌμ΄λΈλ¬λ¦¬ (μ : GNU Libc, musl-libc, uClibc λλ dietlibc). μ»΄νμΌ ν΄μ²΄μΈμ PCλ₯Ό μ¬μ©νμ¬ x86 νλ‘μΈμμμ μ€νλλ©° x86 νλ‘μΈμμ© μ½λλ₯Ό μμ±ν©λλ€. λλΆλΆμ 리λ μ€ μμ€ν μμ, μ»΄νμΌ ν΄μ²΄μΈμ GNU libcλ₯Ό C νμ€ λΌμ΄λΈλ¬λ¦¬λ‘ μ¬μ©ν©λλ€. "νΈμ€νΈ μ»΄νμΌ λꡬ 체μΈ"μ΄λΌκ³ νλ©° μ΄λ₯Ό μ€νμ€μΈ μμ€ν μ "νΈμ€νΈ μμ€ν "μ΄λΌκ³ ν©λλ€. μ»΄νμΌ ν΄μ²΄μΈμ λ°°ν¬λ³Έμ μν΄ μ 곡λλ©° OpenWrt λΉλ μμ€ν κ³Ό μ무 κ΄λ ¨μ΄ μμ΅λλ€.
μλ² λλ μμ€ν μ λ€λ₯Έ νλ‘μΈμλ₯Ό μ¬μ©νλ©° νΈμ€νΈ μμ€ν μμ μ€νλμ§λ§ λμ μμ€ν (λ° λμ νλ‘μΈμμ λͺ λ Ή μ§ν© μν€ν μ² (ISA))μ λν μ½λλ₯Ό μμ±νλ μ»΄νμΌ ν΄μ²΄μΈμ΄ νμν©λλ€. μλ₯Ό λ€μ΄, νΈμ€νΈ μμ€ν μ΄ x86μ μ¬μ©νκ³ λμ μμ€ν μ΄ MIPS32λ₯Ό μ¬μ©νλ κ²½μ° νΈμ€νΈμ μΌλ° μ»΄νμΌ λꡬ 체μΈμ x86μμ μ€νλκ³ x86 μ© μ½λλ₯Ό μμ±νλ©° κ΅μ°¨ μ»΄νμΌ λꡬ 체μΈμ x86μμ μ€νλκ³ MIPS32 μ© μ½λλ₯Ό μμ±ν©λλ€.
μμ μ μννΈμ¨μ΄λ₯Ό μλμΌλ‘ ꡬμ±νκ³ μ»΄νμΌνλ κ²μ΄ κ°λ₯νμ§λ§ OpenWrtμ λΉλ μμ€ν μμ΄ νλ‘μΈμ€λ₯Ό μλννμ¬ λλΆλΆμ μλ² λλ μμ€ν μ λͺ λ Ήμ΄ μΈνΈ μν€ν μ²μμ μλν©λλ€.
OpenWrtμ λΉλ μμ€ν μ κ°λ°μμ©μΌλ‘ μ€κ³λμμ§λ§ κ²½νμ΄ λΆμ‘±ν μ¬μ©μλ μ΄λ₯Ό μ¬μ©νμ¬ μμ μ λ§μΆ€ν νμ¨μ΄λ₯Ό μ½κ² λ§λ€ μ μμ΅λλ€!
OpenWrt Makefileμ κΈ°μ‘΄μ Makefile of Linux make λꡬμλ λ€λ₯Έ μ체 ꡬ문μ κ°μ§κ³ μμ΅λλ€. OpenWrt Makefileμ ν¨ν€μ§μ λ©ν μ 보, ν¨ν€μ§ λ€μ΄λ‘λ μμΉ, μ»΄νμΌ λ°©λ², μ»΄νμΌ λ λ°μ΄λ리 μ€μΉ μμΉ λ±μ μ μν©λλ€. μμΈν λ΄μ©μ OpenWrt μμ© νλ‘κ·Έλ¨ ν¨ν€μ§ μμ± λ°©λ²μ μ°Έμ‘°νμμμ€.
OpenWrt λΉλ μμ€ν - κΈ°λ₯
μννΈμ¨μ΄λ₯Ό μ½κ² ν¬ν ν μ μμ΅λλ€. κΈ°λ₯ ꡬμ±μ μν΄ kconfig (Linux 컀λ menuconfig) μ¬μ© ν΅ν© λ ν¬λ‘μ€ μ»΄νμΌλ¬ ν΄μ²΄μΈ (gcc, ld, ...)μ μ 곡ν©λλ€. autotools (automake, autoconf), cmake, sconsμ λν μΆμνλ₯Ό μ 곡ν©λλ€. νμ€ λ€μ΄λ‘λ, ν¨μΉ, ꡬμ±, μ»΄νμΌ λ° ν¨ν€μ§ μν¬ νλ‘μ° μ²λ¦¬ μλͺ»λ ν¨ν€μ§ μλμμν μ¬λ¬ κ°μ§ μΌλ°μ μΈ ν½μ€ μ μ 곡
OpenWrt λΉλ μμ€ν - νκ² λ§λ€κΈ°
νμ€ ν¨ν€μ§ μν¬ νλ‘μ°λ₯Όμν λ€μμ μμ λ 벨 μμ± λμ μ 곡 λμμ νμ "κ΅¬μ± μμ / μ΄λ¦ / μμ "νμμΌλ‘ νμλ©λλ€ (μ : "toolchain / gdb / compile"λλ "package / mtd / install" ν¨ν€μ§ μμ€ νΈλ¦¬ μ€λΉ : package / foo / prepare ν¨ν€μ§ μ»΄νμΌ : package / foo / compile ν¨ν€μ§ μ 리 : package / foo / clean
OpenWrt λΉλ μμ€ν - λΉλ μνμ€
λꡬ - automake, autoconf, sed, cmake toolchain / binutils - as, ld, ... ν΄μ²΄μΈ / gcc - gcc, g ++, cpp, ... target / linux - 컀λ λͺ¨λ ν¨ν€μ§ - μ½μ΄ λ° νΌλ ν¨ν€μ§ target / linux - 컀λ μ΄λ―Έμ§ target / linux / image - νμ¨μ΄ μ΄λ―Έμ§ νμΌ μμ± λ°μ€ μΉ TextItalic ν μ€νΈ
ν¨μΉ κ΄λ¦¬
λ§μ ν¨ν€μ§κ° κ·Έλλ‘ μλνμ§ μμΌλ©° λμμμ μμ νκ±°λ μ»΄νμΌνλ ν¨μΉκ° νμν©λλ€. μ¬μ΄ ν¨μΉ κ΄λ¦¬λ₯Ό μν΄ OpenWrt λΉλ μμ€ν μ΄ νΌνΈλ₯Ό ν΅ν©ν©λλ€. ν¨ν€μ§ ν¨μΉλ₯Ό νΌνΈ μ리μ¦λ‘ λ°κΎΈκΈ° : make package / foo / prepare QUILT = 1 μμ λ μ리μ¦μμ ν¨μΉ μ λ°μ΄νΈ : make package / foo / update μ λ°μ΄νΈ ν ν¨μΉλ₯Ό μλμΌλ‘ λ¦¬λ² μ΄μ€ν©λλ€. make package / foo / refresh
ν¨ν€μ§ κ³ λ € μ¬ν
μ£Όμ λͺ©νλ λ©λͺ¨λ¦¬μ ν¬κΈ°κ° μλ€λ κ²μ λλ€. μλ² λλ μμ€ν μμ μλ―Έκ°μλ κΈ°λ₯μ configureλ₯Ό ν΅ν΄ λΉνμ±νλκ±°λ ν¨μΉκ° μ μ©λ©λλ€. ν¨ν€μ§λ νΈμ€νΈ μμ€ν μ κ΄κ³μμ΄ μ»΄νμΌ κ°λ₯ν΄μΌνλ©° μ체 ν¬ν¨λμ΄μΌν©λλ€. μ μ λ "configure"μ€ν¬λ¦½νΈλ ν¬λ‘μ€ μ»΄νμΌ μ€μ , autoreconf λλ ν¨μΉκ° νμν κ²½μ° μ’ μ’ μλͺ»λμκ±°λ μ¬μ©ν μ μμ΅λλ€. λ³ν λ° kconfigμλ κ΅¬μ± κ°λ₯ν μ»΄νμΌ νμ μ€μ μ΄ ν¬ν¨λ©λλ€. μννΈμ¨μ΄ ν¬ν μμν νμ€ λ°©λ²μ μμ§λ§ λλΆλΆμ κ²½μ° "κ·Έλ₯ μλ"νμ§λ§ μ’ μ’ ν¨ν€μ§ λΉλ νλ‘μΈμ€μ κ°μ‘°κ° νμν©λλ€.