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" >
2025-10-28 10:57:01 +00:00
< title > Compilation Tools | Static PHP< / title >
2024-07-01 02:35:17 +00:00
< meta name = "description" content = "Build single static PHP binary, with PHP project together, with popular extensions included." >
2025-08-31 05:45:13 +00:00
< meta name = "generator" content = "VitePress v2.0.0-alpha.12" >
2025-10-28 10:57:01 +00:00
< link rel = "preload stylesheet" href = "/assets/style.Djf3bAdT.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-08-31 05:45:13 +00:00
< script type = "module" src = "/assets/app.C9FYtCRt.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-08-31 05:45:13 +00:00
< link rel = "modulepreload" href = "/assets/chunks/theme.MOrVMOSc.js" >
< link rel = "modulepreload" href = "/assets/chunks/framework.Bhsyh9kO.js" >
< link rel = "modulepreload" href = "/assets/en_develop_system-build-tools.md.BmQhyTle.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-10-28 10:57:01 +00:00
< div id = "app" > < div class = "Layout" data-v-1df9f90f > <!-- [ --> <!-- ] --> <!-- [ --> < 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-1df9f90f data-v-9f75dce3 > < div class = "VPNavBar" data-v-9f75dce3 data-v-2a96a3d0 > < div class = "wrapper" data-v-2a96a3d0 > < div class = "container" data-v-2a96a3d0 > < div class = "title" data-v-2a96a3d0 > < div class = "VPNavBarTitle has-sidebar" data-v-2a96a3d0 data-v-1e38c6bc > < a class = "title" href = "/en/" data-v-1e38c6bc > <!-- [ --> <!-- ] --> <!-- [ --> < img class = "VPImage logo" src = "/images/static-php_nobg.png" alt data-v-8426fc1a > <!-- ] --> < span data-v-1e38c6bc > Static PHP< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-2a96a3d0 > < div class = "content-body" data-v-2a96a3d0 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-2a96a3d0 > <!-- [ --> <!-- --> < div id = "docsearch" > < button type = "button" aria-label = "Search" aria-keyshortcuts = "/ control+k meta+k" class = "DocSearch DocSearch-Button" > < span class = "DocSearch-Button-Container" > < span class = "vpi-search DocSearch-Search-Icon" > < / span > < span class = "DocSearch-Button-Placeholder" > Search< / span > < / span > < span class = "DocSearch-Button-Keys" > < kbd class = "DocSearch-Button-Key" > < / kbd > < kbd class = "DocSearch-Button-Key" > < / kbd > < / span > < / button > < / div > <!-- ] --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-2a96a3d0 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-2a96a3d0 data-v-88af2de4 data-v-42cb505d > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "Change language" data-v-42cb505d > < span class = "text" data-v-42cb505d > < span class = "vpi-languages option-icon" data-v-42cb505d > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-42cb505d > < / span > < / span > < / button > < div class = "menu" data-v-42cb505d > < div class = "VPMenu" data-v-42cb505d data-v-25a6cce8 > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-88af2de4 > < p class = "title" data-v-88af2de4 > English< / p > <!-- [ --> < div class = "VPMenuLink" data-v-88af2de4 data-v-cd834e02 > < a class = "VPLink link" href = "/zh/develop/system-build-tools.html" data-v-cd834e02 > <!-- [ --> < span data-v-cd834e02 > 简体中文< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-2a96a3d0 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-2a96a3d0 data-v-0394ad82 data-v-d07f11e6 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/crazywhalecc/static-php-cli" aria-label = "github" target = "_blank" rel = "me noopener" data-v-d07f11e6 data-v-591a6b30 > < span class = "vpi-social-github" > < / span > < / a > <!-- ] --> < / div > < div class = "VPFlyout VPNavBarExtra extra" data-v-2a96a3d0 data-v-bb2aa2f0 data-v-42cb505d > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" ar
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-08-31 05:45:13 +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-10-31 08:47:01 +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 q N Y V 3 B 0 \ " , \ " d e p s - m a p - e x t . m d \ " : \ " C b R 9 N H h U \ " , \ " d e p s - m a p - l i b . m d \ " : \ " c M I O p H k F \ " , \ " e n _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " f C A 6 l X n W \ " , \ " e n _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " C i 9 7 s s L 7 \ " , \ " e n _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " B T D y p - a K \ " , \ " e n _ d e v e l o p _ i n d e x . m d \ " : \ " D U N r U V P 9 \ " , \ " 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 N 8 a S i w g \ " , \ " e n _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " C T C L l q s P \ " , \ " e n _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " X 2 J I d 3 N 9 \ " , \ " 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 \ " : \ " B m Q h y T l e \ " , \ " e n _ f a q _ i n d e x . m d \ " : \ " C _ V Q H F 6 y \ " , \ " e n _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " D n z q 6 g N C \ " , \ " e n _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " D i Y V S a P G \ " , \ " e n _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " C k V R 7 5 n 5 \ " , \ " e n _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " C v O q n r 6 f \ " , \ " e n _ g u i d e _ d e p s - m a p . m d \ " : \ " C p F d g T G r \ " , \ " e n _ g u i d e _ e n v - v a r s . m d \ " : \ " 5 1 D Q 7 b v x \ " , \ " e n _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " C H F G R i K x \ " , \ " e n _ g u i d e _ e x t e n s i o n s . m d \ " : \ " C s v a B C H e \ " , \ " e n _ g u i d e _ i n d e x . m d \ " : \ " C 0 g w K W b 1 \ " , \ " e n _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " D P s G I I 1 D \ " , \ " e n _ g u i d e _ t r o u b l e s h o o t i n g . m d \ " : \ " D 1 9 j R B 1 K \ " , \ " e n _ i n d e x . m d \ " : \ " Y h l q 3 F h s \ " , \ " e x t e n s i o n - n o t e s . m d \ " : \ " B B 7 X l w 1 w \ " , \ " e x t e n s i o n s . m d \ " : \ " 2 1 F a h c J c \ " , \ " i n d e x . m d \ " : \ " C Z z e 5 I _ S \ " , \ " z h _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " f i i K M X n j \ " , \ " z h _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " C A U u 6 v 3 8 \ " , \ " z h _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " 1 N R X I I N s \ " , \ " z h _ d e v e l o p _ i n d e x . m d \ " : \ " C R x n J Z D t \ " , \ " 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 w V U c 0 o E \ " , \ " z h _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " C S 1 V B o _ 1 \ " , \ " z h _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " C E d 1 R y c Z \ " , \ " 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 Q 4 B v P V a \ " , \ " z h _ f a q _ i n d e x . m d \ " : \ " D y N J g 3 P Z \ " , \ " z h _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " C Q 3 V f 3 i 9 \ " , \ " z h _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " o o g W r P n _ \ " , \ " z h _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " C H X y K 6 1 r \ " , \ " z h _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " C r W U a o y L \ " , \ " z h _ g u i d e _ d e p s - m a p . m d \ " : \ " D E h N A 4 6 S \ " , \ " z h _ g u i d e _ e n v - v a r s . m d \ " : \ " C t N l q G k 4 \ " , \ " z h _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " B C w D j B Z H \ " , \ " z h _ g u i d e _ e x t e n s i o n s . m d \ " : \ " D 7 7 m p x g k \ " , \ " z h _ g u i d e _ i n d e x . m d \ " : \ " B B G j n h q - \ " , \ " z h _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " C 3 i k s v H w \ " , \ " 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 R Q L W 2 W P \ " , \ " z h _ i n d e x . m d \ " : \ " D O 7 u d O c 6 \ " } " ) ; 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 \ " , \ " 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 \ " : { \ " l o g o \ " : \ " / i m a g e s / s t a t i c - p h p _ n o b g . p n 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 \ " } , \ " s e a r c h \ " : { \ " p r o v i d e r \ " : \ " a l g o l i a \ " , \ " o p t i o n s \ " : { \ " a p p I d \ " : \ " I H J H U B 1 S F 1 \ " , \ " a p i K e y \ " : \ " 8 2 6 6 d 3 1 c c 2 f f b d 0 e 0 5 9 f 1 c 6 e 5 b d a f 8 f c \ " , \ " i n d e x N a m e \ " : \ " s t a t i c - p h p d o c s \ " } } } , \ " 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
2024-07-01 02:35:17 +00:00
< / body >
< / html >