2025-06-12 04:49:10 +00:00
import { _ as i , c as a , o as e , af as n } from "./chunks/framework.PeLcR_tw.js" ; const d = JSON . parse ( '{"title":"Compilation Tools","description":"","frontmatter":{},"headers":[],"relativePath":"en/develop/system-build-tools.md","filePath":"en/develop/system-build-tools.md"}' ) , t = { name : "en/develop/system-build-tools.md" } ; function l ( o , s , p , h , c , r ) { return e ( ) , a ( "div" , null , s [ 0 ] || ( s [ 0 ] = [ n ( ` <h1 id="compilation-tools" tabindex="-1">Compilation Tools <a class="header-anchor" href="#compilation-tools" aria-label="Permalink to “Compilation Tools”"> </a></h1><p>static-php-cli uses many system compilation tools when building static PHP. These tools mainly include:</p><ul><li><code>autoconf</code>: used to generate <code>configure</code> scripts.</li><li><code>make</code>: used to execute <code>Makefile</code>.</li><li><code>cmake</code>: used to execute <code>CMakeLists.txt</code>.</li><li><code>pkg-config</code>: Used to find the installation path of dependent libraries.</li><li><code>gcc</code>: used to compile C/C++ projects under Linux.</li><li><code>clang</code>: used to compile C/C++ projects under macOS.</li></ul><p>For Linux and macOS operating systems, these tools can usually be installed through the package manager, which is written in the doctor module. Theoretically we can also compile and download these tools manually, but this will increase the complexity of compilation, so we do not recommend this.</p><h2 id="linux-compilation-tools" tabindex="-1">Linux Compilation Tools <a class="header-anchor" href="#linux-compilation-tools" aria-label="Permalink to “Linux Compilation Tools”"> </a></h2><p>For Linux systems, different distributions have different installation methods for compilation tools. And for static compilation, the package management of some distributions cannot install libraries and tools for pure static compilation. Therefore, for the Linux platform and its different distributions, we currently provide a variety of compilation environment preparations.</p><h3 id="glibc-environment" tabindex="-1">Glibc Environment <a class="header-anchor" href="#glibc-environment" aria-label="Permalink to “Glibc Environment”"> </a></h3><p>The glibc environment refers to the underlying <code>libc</code> library of the system (that is, the C standard library that all programs written in C language are dynamically linked to) uses <code>glibc</code>, which is the default environment for most distributions. For example: Ubuntu, Debian, CentOS, RHEL, openSUSE, Arch Linux, etc.</p><p>In the glibc environment, the package management and compiler we use point to glibc by default, and glibc cannot be statically linked well. One of the reasons it cannot be statically linked is that its network library <code>nss</code> cannot be compiled statically.</p><p>For the glibc environment, in static-php-cli and spc in 2.0-RC8 and later, you can choose two ways to build static PHP:</p><ol><li>Use Docker to build, you can use <code>bin/spc-alpine-docker</code> to build, it will build an Alpine Linux docker image.</li><li>Use <code>bin/spc doctor --auto-fix</code> to install the <code>musl-wrapper</code> and <code>musl-cross-make</code> packages, and then build directly. (<a href="https://github.com/crazywhalecc/static-php-cli/blob/main/src/SPC/doctor/item/LinuxMuslCheck.php" target="_blank" rel="noreferrer">Related source code</a>)</li></ol><p>Generally speaking, the build results in these two environments are consistent, and you can choose according to actual needs.</p><p>In the doctor module, static-php-cli will first detect the current Linux distribution. If the current distribution is a glibc environment, you will be prompted to install the musl-wrapper and musl-cross-make packages.</p><p>The process of installing <code>musl-wrapper</code> in the glibc environment is as follows:</p><ol><li>Download the specific version of <a href="https://musl.libc.org/releases/" target="_blank" rel="noreferrer">musl-wrapper source code</a> from the musl official website.</li><li>Use <code>gcc</code> installed from the package management to compile the m
2024-07-01 02:35:17 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > FLAG = - g0 - Os - Wno - error < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ifneq < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > ( < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > $ ( < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > N A T I V E < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > ) < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > , ) < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON _CONFIG += CC = & quot ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > $ ( < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > H O S T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > ) < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > - g c c < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > S T A T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; C X X = & q u o t ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > $ ( < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > H O S T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > ) < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > - g + + < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > S T A T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON _CONFIG += CC = & quot ; gcc < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > S T A T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; C X X = & q u o t ; g + + < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > S T A T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > endif < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON _CONFIG += CFLAGS = & quot ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > F L A G < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; C X X F L A G S = & q u o t ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > F L A G < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; L D F L A G S = & q u o t ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > \ $ { < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > S T A T < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > } < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > & q u o t ; < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > BINUTILS _CONFIG += -- enable - gold = yes -- enable - gprofng = no < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GCC _CONFIG += -- enable - static - pie -- disable - cet -- enable - default - pie < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6A737D;--shiki-dark:#6A737D;" > # -- enable - default - pie < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CONFIG _SUB _REV = 888 c8e3d5f7b < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GCC _VER = 13.2 . 0 < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > BINUTILS _VER = 2.40 < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MUSL _VER = 1.2 . 4 < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GMP _VER = 6.2 . 1 < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MPC _VER = 1.2 . 1 < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MPFR _VER = 4.2 . 0 < / s p a n > < / s p a n >
2025-06-12 04:49:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > LINUX _VER = 6.1 . 36 < / s p a n > < / s p a n > < / c o d e > < / p r e > < / d i v > < p > A n d a l s o y o u n e e d t o a d d < c o d e > g c c - 1 3 . 2 . 0 . t a r . x z . s h a 1 < / c o d e > f i l e , c o n t e n t s h e r e : < / p > < d i v c l a s s = " l a n g u a g e - " > < b u t t o n t i t l e = " C o p y C o d e " c l a s s = " c o p y " > < / b u t t o n > < s p a n c l a s s = " l a n g " > < / s p a n > < p r e c l a s s = " s h i k i s h i k i - t h e m e s g i t h u b - l i g h t g i t h u b - d a r k " s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 e ; - - s h i k i - d a r k : # e 1 e 4 e 8 ; - - s h i k i - l i g h t - b g : # f f f ; - - s h i k i - d a r k - b g : # 2 4 2 9 2 e ; " t a b i n d e x = " 0 " d i r = " l t r " > < c o d e > < s p a n c l a s s = " l i n e " > < s p a n > 5 f 9 5 b 6 d 0 4 2 f b 3 7 d 4 5 c 6 c b e b f c 9 1 d e c f b c 4 f b 4 9 3 c g c c - 1 3 . 2 . 0 . t a r . x z < / s p a n > < / s p a n > < / c o d e > < / p r e > < / d i v > < p > I f y o u a r e u s i n g D o c k e r t o b u i l d , c r e a t e a n e w < c o d e > D o c k e r f i l e < / c o d e > f i l e a n d w r i t e t h e f o l l o w i n g c o n t e n t : < / p > < d i v c l a s s = " l a n g u a g e - d o c k e r f i l e " > < b u t t o n t i t l e = " C o p y C o d e " c l a s s = " c o p y " > < / b u t t o n > < s p a n c l a s s = " l a n g " > d o c k e r f i l e < / s p a n > < p r e c l a s s = " s h i k i s h i k i - t h e m e s g i t h u b - l i g h t g i t h u b - d a r k " s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 e ; - - s h i k i - d a r k : # e 1 e 4 e 8 ; - - s h i k i - l i g h t - b g : # f f f ; - - s h i k i - d a r k - b g : # 2 4 2 9 2 e ; " t a b i n d e x = " 0 " d i r = " l t r " > < c o d e > < s p a n c l a s s = " l i n e " > < s p a n s t y l e = " - - s h i k i - l i g h t : # D 7 3 A 4 9 ; - - s h i k i - d a r k : # F 9 7 5 8 3 ; " > F R O M < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > a l p i n e : e d g e < / s p a n > < / s p a n >
2024-07-01 02:35:17 +00:00
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > a p k a d d - - n o - c a c h e \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gcc g ++ git make curl perl \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > rsync patch wget libtool \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > texinfo autoconf automake \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > bison tar xz bzip2 zlib \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > file binutils flex \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > linux - headers libintl \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gettext gettext - dev icu - libs pkgconf \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > pkgconfig icu - dev bash \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ccache libarchive - tools zip < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > WORKDIR < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > / o p t < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < /span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> git clone https:/ / git . zv . io / toolchains / musl - cross - make . git < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > WORKDIR < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > / o p t / m u s l - c r o s s - m a k e < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > COPY < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > c o n f i g . m a k / o p t / m u s l - c r o s s - m a k e < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > COPY < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > g c c - 1 3 . 2 . 0 . t a r . x z . s h a 1 / o p t / m u s l - c r o s s - m a k e / h a s h e s < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > m a k e T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l - j | | : < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > s e d - i < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > & # 3 9 ; s / p o i s o n c a l l o c / p o i s o n / g & # 3 9 ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > . / g c c - 1 3 . 2 . 0 / g c c / s y s t e m . h < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > m a k e T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l - j < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 E ; - - s h i k i - d a r k : # E 1 E 4 E 8 ; " > m a k e T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l i n s t a l l - j < / s p a n > < / s p a n >
2025-06-12 04:49:10 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN < /span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> tar cvzf x86_64-musl-toolchain.tgz output/ * < / s p a n > < / s p a n > < / c o d e > < / p r e > < / d i v > < p > I f y o u a r e u s i n g A l p i n e L i n u x i n a n o n - D o c k e r e n v i r o n m e n t , y o u c a n d i r e c t l y e x e c u t e t h e c o m m a n d s i n t h e D o c k e r f i l e , f o r e x a m p l e : < / p > < d i v c l a s s = " l a n g u a g e - b a s h " > < b u t t o n t i t l e = " C o p y C o d e " c l a s s = " c o p y " > < / b u t t o n > < s p a n c l a s s = " l a n g " > b a s h < / s p a n > < p r e c l a s s = " s h i k i s h i k i - t h e m e s g i t h u b - l i g h t g i t h u b - d a r k " s t y l e = " - - s h i k i - l i g h t : # 2 4 2 9 2 e ; - - s h i k i - d a r k : # e 1 e 4 e 8 ; - - s h i k i - l i g h t - b g : # f f f ; - - s h i k i - d a r k - b g : # 2 4 2 9 2 e ; " t a b i n d e x = " 0 " d i r = " l t r " > < c o d e > < s p a n c l a s s = " l i n e " > < s p a n s t y l e = " - - s h i k i - l i g h t : # 6 F 4 2 C 1 ; - - s h i k i - d a r k : # B 3 9 2 F 0 ; " > a p k < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > a d d < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > - - n o - c a c h e < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
2024-07-01 02:35:17 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gcc < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > g + + < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > g i t < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > m a k e < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > c u r l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > p e r l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > rsync < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > p a t c h < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > w g e t < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > l i b t o o l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > texinfo < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > a u t o c o n f < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > a u t o m a k e < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > bison < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > t a r < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > x z < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > b z i p 2 < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > z l i b < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > file < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > b i n u t i l s < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > f l e x < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > linux - headers < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > l i b i n t l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gettext < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > g e t t e x t - d e v < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > i c u - l i b s < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > p k g c o n f < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > pkgconfig < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > i c u - d e v < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > b a s h < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > \ \ < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ccache < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > l i b a r c h i v e - t o o l s < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > z i p < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > git < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > c l o n e < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > h t t p s : / / g i t . z v . i o / t o o l c h a i n s / m u s l - c r o s s - m a k e . g i t < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6A737D;--shiki-dark:#6A737D;" > # Copy config . mak to the working directory of musl - cross - make . < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6A737D;--shiki-dark:#6A737D;" > # You need to replace / path / to / config . mak with your config . mak file path . < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > cp < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > / p a t h / t o / c o n f i g . m a k < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > m u s l - c r o s s - m a k e / < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > cp < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > / p a t h / t o / g c c - 1 3 . 2 . 0 . t a r . x z . s h a 1 < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > m u s l - c r o s s - m a k e / h a s h e s < / s p a n > < / s p a n >
< span class = "line" > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > - j < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # D 7 3 A 4 9 ; - - s h i k i - d a r k : # F 9 7 5 8 3 ; " > | | < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > : < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > sed < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > - i < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > & # 3 9 ; s / p o i s o n c a l l o c / p o i s o n / g & # 3 9 ; < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > . / g c c - 1 3 . 2 . 0 / g c c / s y s t e m . h < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > - j < / s p a n > < / s p a n >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > T A R G E T = x 8 6 _ 6 4 - l i n u x - m u s l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > i n s t a l l < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > - j < / s p a n > < / s p a n >
2025-06-12 04:49:10 +00:00
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > tar < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > c v z f < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > x 8 6 _ 6 4 - m u s l - t o o l c h a i n . t g z < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 3 2 F 6 2 ; - - s h i k i - d a r k : # 9 E C B F F ; " > o u t p u t / < / s p a n > < s p a n s t y l e = " - - s h i k i - l i g h t : # 0 0 5 C C 5 ; - - s h i k i - d a r k : # 7 9 B 8 F F ; " > * < / s p a n > < / s p a n > < / c o d e > < / p r e > < / d i v > < d i v c l a s s = " t i p c u s t o m - b l o c k " > < p c l a s s = " c u s t o m - b l o c k - t i t l e c u s t o m - b l o c k - t i t l e - d e f a u l t " > T I P < / p > < p > A l l t h e a b o v e s c r i p t s a r e s u i t a b l e f o r x 8 6 _ 6 4 a r c h i t e c t u r e L i n u x . I f y o u n e e d t o b u i l d m u s l - c r o s s - m a k e f o r t h e A R M e n v i r o n m e n t , j u s t r e p l a c e a l l < c o d e > x 8 6 _ 6 4 < / c o d e > a b o v e w i t h < c o d e > a a r c h 6 4 < / c o d e > . < / p > < / d i v > < p > T h i s c o m p i l a t i o n p r o c e s s m a y f a i l d u e t o i n s u f f i c i e n t m e m o r y , n e t w o r k p r o b l e m s , e t c . Y o u c a n t r y a f e w m o r e t i m e s , o r u s e a m a c h i n e w i t h l a r g e r m e m o r y t o c o m p i l e . I f y o u e n c o u n t e r p r o b l e m s o r y o u h a v e b e t t e r i m p r o v e m e n t s o l u t i o n s , g o t o < a h r e f = " h t t p s : / / g i t h u b . c o m / c r a z y w h a l e c c / s t a t i c - p h p - c l i - h o s t e d / i s s u e s / 1 " t a r g e t = " _ b l a n k " r e l = " n o r e f e r r e r " > D i s c u s s i o n < / a > . < / p > < h 2 i d = " m a c o s - e n v i r o n m e n t " t a b i n d e x = " - 1 " > m a c O S E n v i r o n m e n t < a c l a s s = " h e a d e r - a n c h o r " h r e f = " # m a c o s - e n v i r o n m e n t " a r i a - l a b e l = " P e r m a l i n k t o “ m a c O S E n v i r o n m e n t ” " > < / a > < / h 2 > < p > F o r m a c O S s y s t e m s , t h e m a i n c o m p i l a t i o n t o o l w e u s e i s < c o d e > c l a n g < / c o d e > , w h i c h i s t h e d e f a u l t c o m p i l e r f o r m a c O S s y s t e m s a n d i s a l s o t h e c o m p i l e r o f X c o d e . < / p > < p > C o m p i l i n g u n d e r m a c O S m a i n l y r e l i e s o n X c o d e o r X c o d e C o m m a n d L i n e T o o l s . Y o u c a n d o w n l o a d X c o d e f r o m t h e A p p S t o r e , o r e x e c u t e < c o d e > x c o d e - s e l e c t - - i n s t a l l < / c o d e > i n t h e t e r m i n a l t o i n s t a l l X c o d e C o m m a n d L i n e T o o l s . < / p > < p > I n a d d i t i o n , i n t h e < c o d e > d o c t o r < / c o d e > e n v i r o n m e n t c h e c k m o d u l e , s t a t i c - p h p - c l i w i l l c h e c k w h e t h e r H o m e b r e w , c o m p i l a t i o n t o o l s , e t c . a r e i n s t a l l e d o n t h e m a c O S s y s t e m . I f n o t , y o u w i l l b e p r o m p t e d t o i n s t a l l t h e m . I w i l l n o t g o i n t o d e t a i l s h e r e . < / p > < h 2 i d = " f r e e b s d - e n v i r o n m e n t " t a b i n d e x = " - 1 " > F r e e B S D E n v i r o n m e n t < a c l a s s = " h e a d e r - a n c h o r " h r e f = " # f r e e b s d - e n v i r o n m e n t " a r i a - l a b e l = " P e r m a l i n k t o “ F r e e B S D E n v i r o n m e n t ” " > < / a > < / h 2 > < p > F r e e B S D i s a l s o a U n i x s y s t e m , a n d i t s c o m p i l a t i o n t o o l s a r e s i m i l a r t o m a c O S . Y o u c a n d i r e c t l y u s e t h e p a c k a g e m a n a g e m e n t < c o d e > p k g < / c o d e > t o i n s t a l l < c o d e > c l a n g < / c o d e > a n d o t h e r c o m p i l a t i o n t o o l s t h r o u g h t h e < c o d e > d o c t o r < / c o d e > c o m m a n d . < / p > < h 2 i d = " p k g - c o n f i g - c o m p i l a t i o n - n i x - o n l y " t a b i n d e x = " - 1 " > p k g - c o n f i g C o m p i l a t i o n ( * n i x o n l y ) < a c l a s s = " h e a d e r - a n c h o r " h r e f = " # p k g - c o n f i g - c o m p i l a t i o n - n i x - o n l y " a r i a - l a b e l = " P e r m a l i n k t o “ p k g - c o n f i g C o m p i l a t i o n ( * n i x o n l y ) ” " > < / a > < / h 2 > < p > I f y o u o b s e r v e t h e c o m p i l a t i o n l o g w h e n u s i n g s t a t i c - p h p - c l i t o b u i l d s t a t i c P H P , y o u w i l l f i n d t h a t n o m a t t e r w h a t i s c o m p i l e d , < c o d e > p k g - c o n f i g < / c o d e > w i l l b e c o m p i l e d f i r s t . T h i s i s b e c a u s e < c o d e > p k g - c o n f i g < / c o d e > i s a l i b r a r y u s e d t o f i n d d e p e n d e n c i e s . I n e a r l i e r v e r s i o n s o f s t a t i c - p h p - c l i , w e d i r e c t l y u s e d t h e < c o d e > p k g - c o n f i g < / c o d e > t o o l i n s t a l l e d b y p a c k a g e m a n a g e m e n t , b u t t h i s w o u l d c a u s e s o m e p r o b l e m s , s u c h a s : < / p > < u l > < l i > E v e n i f < c o d e > P K G _ C O N F I G _ P A T H < / c o d e > i s s p e c i f i e d , < c o d e > p k g - c o n f i g < / c o d e > w i l l t r y t o f i n d d e p e n d e n t p a c k a g e s f r o m t h e s y s t e m p a t h . < / l i > < l i > S i n c e < c o d e > p k g - c o n f i g < / c o d e > w i l l l o o k f o r d e p e n d e n t p a c k a g e s f r o m t h e s y s t e m p a t h , i f a d e p e n d e n t p a c k a g e w i t h t h e s a m e n a m e e x i s t s i n t h e s y s t e m , c o m p i l a t i o n m a y f a i l . < / l i > < / u l > < p > I n o r d e r t o a v o i d t h e a b o v e p r o b l e m s , w e c o m p i l e < c o d e > p k g - c o n f i g < / c o d e > i n t o < c o d e > b u i l d r o o t / b i n < / c o d e > i n u s e r m o d e a n d u s e i t . W e u s e p a r a m e t e r s s u c h a s < c o d e > - - w i t h o u t - s y s r o o t < / c o d e > t o a v o i d l o o k i n g f o r d e p e n d e n t p a c k a g e s f r o m t h e s y s t e m p a t h . < / p > ` , 5 0 ) ] ) ) } c o n s t m = i ( t , [ [ " r e n d e r " , l ] ] ) ; e x p o r t { d a s _ _ p a g e D a t a , m a s d e f a u l t } ;