2024-07-01 02:35:17 +00:00
<!DOCTYPE html>
< html lang = "en" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< title > Compilation Tools | static-php-cli< / title >
< meta name = "description" content = "Build single static PHP binary, with PHP project together, with popular extensions included." >
2025-06-12 04:49:10 +00:00
< meta name = "generator" content = "VitePress v2.0.0-alpha.5" >
2025-06-30 14:10:14 +00:00
< link rel = "preload stylesheet" href = "/assets/style.dWIvQ_yG.css" as = "style" >
2025-06-12 04:49:10 +00:00
< link rel = "preload stylesheet" href = "/vp-icons.css" as = "style" >
2024-07-01 02:35:17 +00:00
2025-06-30 14:10:14 +00:00
< script type = "module" src = "/assets/app.DQMp3l4I.js" > < / script >
2024-07-01 02:35:17 +00:00
< link rel = "preload" href = "/assets/inter-roman-latin.Di8DUHzh.woff2" as = "font" type = "font/woff2" crossorigin = "" >
2025-06-30 14:10:14 +00:00
< link rel = "modulepreload" href = "/assets/chunks/theme.DbVD3jYa.js" >
2025-06-12 04:49:10 +00:00
< link rel = "modulepreload" href = "/assets/chunks/framework.PeLcR_tw.js" >
< link rel = "modulepreload" href = "/assets/en_develop_system-build-tools.md.DK4AaCy_.lean.js" >
2024-07-01 02:35:17 +00:00
< script id = "check-dark-mode" > ( ( ) => { const e = localStorage . getItem ( "vitepress-theme-appearance" ) || "auto" , a = window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ; ( ! e || e === "auto" ? a : e === "dark" ) && document . documentElement . classList . add ( "dark" ) } ) ( ) ; < / script >
< script id = "check-mac-os" > document . documentElement . classList . toggle ( "mac" , /Mac|iPhone|iPod|iPad/i . test ( navigator . platform ) ) ; < / script >
< / head >
< body >
2025-06-12 04:49:10 +00:00
< div id = "app" > < div class = "Layout" data-v-5e06b97a > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-0b0ada53 > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-0b0ada53 > Skip to content< / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-5e06b97a data-v-ae24b3ad > < div class = "VPNavBar" data-v-ae24b3ad data-v-0ae64501 > < div class = "wrapper" data-v-0ae64501 > < div class = "container" data-v-0ae64501 > < div class = "title" data-v-0ae64501 > < div class = "VPNavBarTitle has-sidebar" data-v-0ae64501 data-v-1e38c6bc > < a class = "title" href = "/en/" data-v-1e38c6bc > <!-- [ --> <!-- ] --> <!-- --> < span data-v-1e38c6bc > static-php-cli< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-0ae64501 > < div class = "content-body" data-v-0ae64501 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-0ae64501 > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-0ae64501 data-v-39714824 > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-39714824 > Main Navigation < / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/guide/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > Guide< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/develop/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > Advanced< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/contributing/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > Contributing< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/en/faq/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > FAQ< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-0ae64501 data-v-88af2de4 data-v-3ab3deac > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "Change language" data-v-3ab3deac > < span class = "text" data-v-3ab3deac > < span class = "vpi-languages option-icon" data-v-3ab3deac > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-3ab3deac > < / span > < / span > < / button > < div class = "menu" data-v-3ab3deac > < div class = "VPMenu" data-v-3ab3deac data-v-c9afd7f1 > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-88af2de4 > < p class = "title" data-v-88af2de4 > English< / p > <!-- [ --> < div class = "VPMenuLink" data-v-88af2de4 data-v-35975db6 > < a class = "VPLink link" href = "/zh/develop/system-build-tools.html" data-v-35975db6 > <!-- [ --> < span data-v-35975db6 > 简体中文< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-0ae64501 data-v-6c893767 > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title aria-checked = "false" data-v-6c893767 data-v-5337faa4 data-v-1d5665e3 > < span class = "check" data-v-1d5665e3 > < span class = "icon" data-v-1d5665e3 > <!-- [ --> < span class = "vpi-sun sun" data-v-5337faa4 > < / span > < span class = "vpi-moon moon" data-v-5337faa4 > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-0ae64501 data-v-0394ad82 data-v-d474d15f > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/crazywhalecc/static-php-cli" aria-label = "github" target = "_blank" rel = "noopener" data-v-d474d15f data-v-bd121fe5 > < span class = "vpi-social-github" > < / span > < / a > <!-- ] --> < / div > < div class = "VPFlyout VPNavBarExtra extra" data-v-0ae64501 data-v-bb2aa2f0 data-v-3ab3deac > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "extra navigation" data-v-3ab3deac > < span class = "vpi-more-horizontal icon" data-v-3ab3deac > < / span > < / button > < div class = "menu" data-v-3ab3deac > < div class = "VPMenu" data-v-3ab3deac data-v-c9afd7f1 > <!-- --> <!-- [ --> <!-- [ --> < div class = "group translations" data-v-bb2aa2f0 > < p class = "trans-title" data-v-bb2aa2f0 > English< / p > <!-- [ --> < div class = "VPMenuLink" data-v-bb2aa2f0 data-v-35975db6 > < a class = "VPLink link" href = "/zh/develop/system-build-tools.html" data-v-35975db6 > <!-- [ --> < span data-v-35975db6 > 简体中文< / span > <!-- ] --> < / a > < / div > <
2024-07-01 02:35:17 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > FLAG = -g0 -Os -Wno-error< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ifneq< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > $(< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > NATIVE< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > )< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ,)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON_CONFIG += CC=" < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > $(< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > HOST< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > )< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > -gcc < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > STAT< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " CXX=" < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > $(< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > HOST< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > )< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > -g++ < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > STAT< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON_CONFIG += CC=" gcc < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > STAT< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " CXX=" g++ < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > STAT< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > endif< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > COMMON_CONFIG += CFLAGS=" < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > FLAG< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " CXXFLAGS=" < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > FLAG< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " LDFLAGS=" < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ${< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > STAT< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > }< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > " < / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > BINUTILS_CONFIG += --enable-gold=yes --enable-gprofng=no< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GCC_CONFIG += --enable-static-pie --disable-cet --enable-default-pie < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6A737D;--shiki-dark:#6A737D;" > #--enable-default-pie< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CONFIG_SUB_REV = 888c8e3d5f7b< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GCC_VER = 13.2.0< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > BINUTILS_VER = 2.40< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MUSL_VER = 1.2.4< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > GMP_VER = 6.2.1< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MPC_VER = 1.2.1< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > MPFR_VER = 4.2.0< / span > < / span >
2025-06-12 04:49:10 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > LINUX_VER = 6.1.36< / span > < / span > < / code > < / pre > < / div > < p > And also you need to add < code > gcc-13.2.0.tar.xz.sha1< / code > file, contents here:< / p > < div class = "language-" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > < / span > < pre class = "shiki shiki-themes github-light github-dark" style = "--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex = "0" dir = "ltr" > < code > < span class = "line" > < span > 5f95b6d042fb37d45c6cbebfc91decfbc4fb493c gcc-13.2.0.tar.xz< / span > < / span > < / code > < / pre > < / div > < p > If you are using Docker to build, create a new < code > Dockerfile< / code > file and write the following content:< / p > < div class = "language-dockerfile" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > dockerfile< / span > < pre class = "shiki shiki-themes github-light github-dark" style = "--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex = "0" dir = "ltr" > < code > < span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > FROM< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > alpine:edge< / span > < / span >
2024-07-01 02:35:17 +00:00
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > apk add --no-cache \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gcc g++ git make curl perl \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > rsync patch wget libtool \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > texinfo autoconf automake \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > bison tar xz bzip2 zlib \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > file binutils flex \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > linux-headers libintl \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gettext gettext-dev icu-libs pkgconf \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > pkgconfig icu-dev bash \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ccache libarchive-tools zip< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > WORKDIR< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > /opt< / span > < / span >
< span class = "line" > < / span >
< 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< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > WORKDIR< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > /opt/musl-cross-make< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > COPY< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.mak /opt/musl-cross-make< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > COPY< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gcc-13.2.0.tar.xz.sha1 /opt/musl-cross-make/hashes< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make TARGET=x86_64-linux-musl -j || :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > sed -i < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' s/poison calloc/poison/g' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ./gcc-13.2.0/gcc/system.h< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make TARGET=x86_64-linux-musl -j< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > RUN< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make TARGET=x86_64-linux-musl install -j< / span > < / span >
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/*< / span > < / span > < / code > < / pre > < / div > < p > If you are using Alpine Linux in a non-Docker environment, you can directly execute the commands in the Dockerfile, for example:< / p > < div class = "language-bash" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > bash< / span > < pre class = "shiki shiki-themes github-light github-dark" style = "--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e;" tabindex = "0" dir = "ltr" > < code > < span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > apk< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > add< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > --no-cache< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
2024-07-01 02:35:17 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gcc < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > g++< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > git< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > make< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > curl< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > perl< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > rsync < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > patch< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > wget< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > libtool< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > texinfo < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > autoconf< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > automake< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > bison < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > tar< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > xz< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > bzip2< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > zlib< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > file < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > binutils< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > flex< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > linux-headers < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > libintl< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > gettext < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > gettext-dev< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > icu-libs< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > pkgconf< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > pkgconfig < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > icu-dev< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > bash< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ccache < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > libarchive-tools< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > zip< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > git< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > clone< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > https://git.zv.io/toolchains/musl-cross-make.git< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6A737D;--shiki-dark:#6A737D;" > # Copy config.mak to the working directory of musl-cross-make.< / span > < / span >
< 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.< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > cp< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > /path/to/config.mak< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > musl-cross-make/< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > cp< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > /path/to/gcc-13.2.0.tar.xz.sha1< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > musl-cross-make/hashes< / span > < / span >
< span class = "line" > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > TARGET=x86_64-linux-musl< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > -j< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ||< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > sed< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > -i< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' s/poison calloc/poison/g' < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ./gcc-13.2.0/gcc/system.h< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > TARGET=x86_64-linux-musl< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > -j< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > make< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > TARGET=x86_64-linux-musl< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > install< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > -j< / span > < / span >
2025-06-12 04:49:10 +00:00
< span class = "line" > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > tar< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > cvzf< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > x86_64-musl-toolchain.tgz< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > output/< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > *< / span > < / span > < / code > < / pre > < / div > < div class = "tip custom-block" > < p class = "custom-block-title custom-block-title-default" > TIP< / p > < p > All the above scripts are suitable for x86_64 architecture Linux. If you need to build musl-cross-make for the ARM environment, just replace all < code > x86_64< / code > above with < code > aarch64< / code > .< / p > < / div > < p > This compilation process may fail due to insufficient memory, network problems, etc. You can try a few more times, or use a machine with larger memory to compile. If you encounter problems or you have better improvement solutions, go to < a href = "https://github.com/crazywhalecc/static-php-cli-hosted/issues/1" target = "_blank" rel = "noreferrer" > Discussion< / a > .< / p > < h2 id = "macos-environment" tabindex = "-1" > macOS Environment < a class = "header-anchor" href = "#macos-environment" aria-label = "Permalink to “macOS Environment”" > < / a > < / h2 > < p > For macOS systems, the main compilation tool we use is < code > clang< / code > , which is the default compiler for macOS systems and is also the compiler of Xcode.< / p > < p > Compiling under macOS mainly relies on Xcode or Xcode Command Line Tools. You can download Xcode from the App Store, or execute < code > xcode-select --install< / code > in the terminal to install Xcode Command Line Tools.< / p > < p > In addition, in the < code > doctor< / code > environment check module, static-php-cli will check whether Homebrew, compilation tools, etc. are installed on the macOS system. If not, you will be prompted to install them. I will not go into details here.< / p > < h2 id = "freebsd-environment" tabindex = "-1" > FreeBSD Environment < a class = "header-anchor" href = "#freebsd-environment" aria-label = "Permalink to “FreeBSD Environment”" > < / a > < / h2 > < p > FreeBSD is also a Unix system, and its compilation tools are similar to macOS. You can directly use the package management < code > pkg< / code > to install < code > clang< / code > and other compilation tools through the < code > doctor< / code > command.< / p > < h2 id = "pkg-config-compilation-nix-only" tabindex = "-1" > pkg-config Compilation (*nix only) < a class = "header-anchor" href = "#pkg-config-compilation-nix-only" aria-label = "Permalink to “pkg-config Compilation (*nix only)”" > < / a > < / h2 > < p > If you observe the compilation log when using static-php-cli to build static PHP, you will find that no matter what is compiled, < code > pkg-config< / code > will be compiled first. This is because < code > pkg-config< / code > is a library used to find dependencies. In earlier versions of static-php-cli, we directly used the < code > pkg-config< / code > tool installed by package management, but this would cause some problems, such as:< / p > < ul > < li > Even if < code > PKG_CONFIG_PATH< / code > is specified, < code > pkg-config< / code > will try to find dependent packages from the system path.< / li > < li > Since < code > pkg-config< / code > will look for dependent packages from the system path, if a dependent package with the same name exists in the system, compilation may fail.< / li > < / ul > < p > In order to avoid the above problems, we compile < code > pkg-config< / code > into < code > buildroot/bin< / code > in user mode and use it. We use parameters such as < code > --without-sysroot< / code > to avoid looking for dependent packages from the system path.< / p > < / div > < / div > < / main > < footer class = "VPDocFooter" data-v-7011f0d8 data-v-e257564d > <!-- [ --> <!-- ] --> <!-- --> < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-e257564d > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-e257564d > Pager< / span > < div class = "pager" data-v-e257564d > < a class = "VPLink link pager-link prev" href = "/en/develop/source-module.html" data-v-e257564d > <!-- [ --> < span class = "desc" data-v-e257564d > Previous page< / span > < span class = "title" data-v-e257564d > Source< / span > <!-- ] --> < / a > < / div > < di
2025-07-23 14:04:34 +00:00
< script > w i n d o w . _ _ V P _ H A S H _ M A P _ _ = J S O N . p a r s e ( " { \ " d e p s - c r a f t - y m l . m d \ " : \ " D W P K e u X i \ " , \ " d e p s - m a p - e x t . m d \ " : \ " C _ 5 1 T V 4 x \ " , \ " d e p s - m a p - l i b . m d \ " : \ " D O t B R 8 N X \ " , \ " e n _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " C 8 t X D L 1 f \ " , \ " e n _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " B D q 8 u W I r \ " , \ " e n _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " D Y V f K g h t \ " , \ " e n _ d e v e l o p _ i n d e x . m d \ " : \ " D S l q u r y N \ " , \ " e n _ d e v e l o p _ p h p - s r c - c h a n g e s . m d \ " : \ " D a d H F a G C \ " , \ " e n _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " C e J E g S _ j \ " , \ " e n _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " D 1 k B T w e h \ " , \ " e n _ d e v e l o p _ s y s t e m - b u i l d - t o o l s . m d \ " : \ " D K 4 A a C y _ \ " , \ " e n _ f a q _ i n d e x . m d \ " : \ " D n H L g G c l \ " , \ " e n _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " B C J v L z 8 l \ " , \ " e n _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " C G 2 3 C k L K \ " , \ " e n _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " B D B C s G W a \ " , \ " e n _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " a k P h N f S m \ " , \ " e n _ g u i d e _ d e p s - m a p . m d \ " : \ " C y - s D e x B \ " , \ " e n _ g u i d e _ e n v - v a r s . m d \ " : \ " D z V A T b t O \ " , \ " e n _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " 4 _ z o o f n y \ " , \ " e n _ g u i d e _ e x t e n s i o n s . m d \ " : \ " D o D M 8 s G I \ " , \ " e n _ g u i d e _ i n d e x . m d \ " : \ " B E 1 G 5 v 5 5 \ " , \ " e n _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " 9 I R i O U o X \ " , \ " e n _ g u i d e _ t r o u b l e s h o o t i n g . m d \ " : \ " B v J g Q K v b \ " , \ " e n _ i n d e x . m d \ " : \ " k O - e 3 9 M 0 \ " , \ " e x t e n s i o n - n o t e s . m d \ " : \ " D k p Y D q 7 p \ " , \ " e x t e n s i o n s . m d \ " : \ " I 6 6 d g m M R \ " , \ " i n d e x . m d \ " : \ " w J B x K T z p \ " , \ " z h _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " 7 J N 5 x g r v \ " , \ " z h _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " D f v 1 f X u q \ " , \ " z h _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " B 8 r 2 l b U 8 \ " , \ " z h _ d e v e l o p _ i n d e x . m d \ " : \ " B F W l i V J D \ " , \ " z h _ d e v e l o p _ p h p - s r c - c h a n g e s . m d \ " : \ " C k j a M I k y \ " , \ " z h _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " D o B n e z P 5 \ " , \ " z h _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " D S t J T s Y D \ " , \ " z h _ d e v e l o p _ s y s t e m - b u i l d - t o o l s . m d \ " : \ " C x P k P V _ h \ " , \ " z h _ f a q _ i n d e x . m d \ " : \ " D 6 3 h F H S U \ " , \ " z h _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " B W F r j W w Z \ " , \ " z h _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " 6 J B R E A B Q \ " , \ " z h _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " C G b U 9 3 7 o \ " , \ " z h _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " C D D i y n m K \ " , \ " z h _ g u i d e _ d e p s - m a p . m d \ " : \ " D r A Y l n t u \ " , \ " z h _ g u i d e _ e n v - v a r s . m d \ " : \ " D q Y H b U f S \ " , \ " z h _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " 9 F m f x - h b \ " , \ " z h _ g u i d e _ e x t e n s i o n s . m d \ " : \ " C 1 B o Y s n J \ " , \ " z h _ g u i d e _ i n d e x . m d \ " : \ " D I A j A K H 4 \ " , \ " z h _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " C r F A 3 m m - \ " , \ " z h _ g u i d e _ t r o u b l e s h o o t i n g . m d \ " : \ " B 9 W G H M I U \ " , \ " z h _ i n d e x . m d \ " : \ " D c i k G F e e \ " } " ) ; w i n d o w . _ _ V P _ S I T E _ D A T A _ _ = J S O N . p a r s e ( " { \ " l a n g \ " : \ " e n - U S \ " , \ " d i r \ " : \ " l t r \ " , \ " t i t l e \ " : \ " s t a t i c - p h p - c l i \ " , \ " d e s c r i p t i o n \ " : \ " B u i l d s i n g l e s t a t i c P H P b i n a r y , w i t h P H P p r o j e c t t o g e t h e r , w i t h p o p u l a r e x t e n s i o n s i n c l u d e d . \ " , \ " b a s e \ " : \ " / \ " , \ " h e a d \ " : [ ] , \ " r o u t e r \ " : { \ " p r e f e t c h L i n k s \ " : t r u e } , \ " a p p e a r a n c e \ " : t r u e , \ " t h e m e C o n f i g \ " : { \ " n a v \ " : [ ] , \ " s o c i a l L i n k s \ " : [ { \ " i c o n \ " : \ " g i t h u b \ " , \ " l i n k \ " : \ " 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 \ " } ] , \ " f o o t e r \ " : { \ " m e s s a g e \ " : \ " R e l e a s e d u n d e r t h e M I T L i c e n s e . \ " , \ " c o p y r i g h t \ " : \ " C o p y r i g h t © 2 0 2 3 - p r e s e n t c r a z y w h a l e c c \ " } } , \ " l o c a l e s \ " : { \ " e n \ " : { \ " l a b e l \ " : \ " E n g l i s h \ " , \ " l a n g \ " : \ " e n \ " , \ " t h e m e C o n f i g \ " : { \ " n a v \ " : [ { \ " t e x t \ " : \ " G u i d e \ " , \ " l i n k \ " : \ " / e n / g u i d e / \ " } , { \ " t e x t \ " : \ " A d v a n c e d \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / \ " } , { \ " t e x t \ " : \ " C o n t r i b u t i n g \ " , \ " l i n k \ " : \ " / e n / c o n t r i b u t i n g / \ " } , { \ " t e x t \ " : \ " F A Q \ " , \ " l i n k \ " : \ " / e n / f a q / \ " } ] , \ " s i d e b a r \ " : { \ " / e n / g u i d e / \ " : [ { \ " t e x t \ " : \ " B a s i c B u i l d G u i d e s \ " , \ " i t e m s \ " : [ { \ " t e x t \ " : \ " G u i d e \ " , \ " l i n k \ " : \ " / e n / g u i d e / \ " } , { \ " t e x t \ " : \ " B u i l d ( L o c a l ) \ " , \ " l i n k \ " : \ " / e n / g u i d e / m a n u a l - b u i l d \ " } , { \ " t e x t \ " : \ " B u i l d ( C I ) \ " , \ " l i n k \ " : \ " / e n / g u i d e / a c t i o n - b u i l d \ " } , { \ " t e x t \ " : \ " S u p p o r t e d E x t e n s i o n s \ " , \ " l i n k \ " : \ " / e n / g u i d e / e x t e n s i o n s \ " } , { \ " t e x t \ " : \ " E x t e n s i o n N o t e s \ " , \ " l i n k \ " : \ " / e n / g u i d e / e x t e n s i o n - n o t e s \ " } , { \ " t e x t \ " : \ " B u i l d C o m m a n d G e n e r a t o r \ " , \ " l i n k \ " : \ " / e n / g u i d e / c l i - g e n e r a t o r \ " } , { \ " t e x t \ " : \ " E n v i r o n m e n t V a r i a b l e s \ " , \ " l i n k \ " : \ " / e n / g u i d e / e n v - v a r s \ " , \ " c o l l a p s e d \ " : t r u e } , { \ " t e x t \ " : \ " D e p e n d e n c y T a b l e \ " , \ " l i n k \ " : \ " / e n / g u i d e / d e p s - m a p \ " } ] } , { \ " t e x t \ " : \ " E x t e n d e d B u i l d G u i d e s \ " , \ " i t e m s \ " : [ { \ " t e x t \ " : \ " T r o u b l e s h o o t i n g \ " , \ " l i n k \ " : \ " / e n / g u i d e / t r o u b l e s h o o t i n g \ " } , { \ " t e x t \ " : \ " B u i l d o n W i n d o w s \ " , \ " l i n k \ " : \ " / e n / g u i d e / b u i l d - o n - w i n d o w s \ " } , { \ " t e x t \ " : \ " B u i l d w i t h G N U l i b c \ " , \ " l i n k \ " : \ " / e n / g u i d e / b u i l d - w i t h - g l i b c \ " } ] } ] , \ " / e n / d e v e l o p / \ " : [ { \ " t e x t \ " : \ " D e v e l o p m e n t \ " , \ " i t e m s \ " : [ { \ " t e x t \ " : \ " G e t S t a r t e d \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / \ " } , { \ " t e x t \ " : \ " P r o j e c t S t r u c t u r e \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / s t r u c t u r e \ " } , { \ " t e x t \ " : \ " P H P S o u r c e M o d i f i c a t i o n \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / p h p - s r c - c h a n g e s \ " } ] } , { \ " t e x t \ " : \ " M o d u l e \ " , \ " i t e m s \ " : [ { \ " t e x t \ " : \ " D o c t o r \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / d o c t o r - m o d u l e \ " } , { \ " t e x t \ " : \ " S o u r c e \ " , \ " l i n k \ " : \ " / e n / d e v e l o p / s o u r c e -
2024-07-01 02:35:17 +00:00
< / body >
< / html >