2024-07-01 02:35:17 +00:00
<!DOCTYPE html>
< html lang = "zh" 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 > 系统编译工具 | 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/zh_develop_system-build-tools.md.CQ4BvPVa.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 = "/zh/" 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 = "/zh/guide/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > 构建指南< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/develop/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > 进阶< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/contributing/" tabindex = "0" data-v-39714824 data-v-e56f3d57 > <!-- [ --> < span data-v-e56f3d57 > 贡献< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/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 > 简体中文< / p > <!-- [ --> < div class = "VPMenuLink" data-v-88af2de4 data-v-cd834e02 > < a class = "VPLink link" href = "/en/develop/system-build-tools.html" data-v-cd834e02 > <!-- [ --> < span data-v-cd834e02 > English< / 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" ari
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 > 同时,你需要新建一个 < code > gcc-13.2.0.tar.xz.sha1< / code > 文件,文件内容如下:< / 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 > 如果你使用的是 Docker 构建,新建一个 < code > Dockerfile< / code > 文件,写入以下内容:< / 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 > 如果你使用的是非 Docker 环境的 Alpine Linux, 可以直接执行 Dockerfile 中的命令,例如:< / 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;" > # 将 config.mak 拷贝到 musl-cross-make 的工作目录内,你需要将 /path/to/config.mak 替换为你的 config.mak 文件路径< / 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 > 以上所有脚本都适用于 x86_64 架构的 Linux。如果你需要构建 ARM 环境的 musl-cross-make, 只需要将上方所有 < code > x86_64< / code > 替换为 < code > aarch64< / code > 即可。< / p > < / div > < p > 这个编译过程可能会因为内存不足、网络问题等原因导致编译失败,你可以多尝试几次,或者使用更大内存的机器来编译。 如果遇到了问题,或者你有更好的改进方案,可以在 < a href = "https://github.com/crazywhalecc/static-php-cli-hosted/issues/1" target = "_blank" rel = "noreferrer" > 讨论< / a > 中提出。< / p > < h2 id = "macos-环境编译工具" tabindex = "-1" > macOS 环境编译工具 < a class = "header-anchor" href = "#macos-环境编译工具" aria-label = "Permalink to “macOS 环境编译工具”" > < / a > < / h2 > < p > 对于 macOS 系统来说,我们使用的编译工具主要是 < code > clang< / code > ,它是 macOS 系统默认的编译器,同时也是 Xcode 的编译器。< / p > < p > 在 macOS 下编译,主要依赖于 Xcode 或 Xcode Command Line Tools, 你可以在 App Store 下载 Xcode, 或者在终端执行 < code > xcode-select --install< / code > 来安装 Xcode Command Line Tools。< / p > < p > 此外,在 < code > doctor< / code > 环境检查模块中, static-php-cli 会检查 macOS 系统是否安装了 Homebrew、编译工具等, 如果没有, 会提示你安装, 这里不再赘述。< / p > < h2 id = "freebsd-环境编译工具" tabindex = "-1" > FreeBSD 环境编译工具 < a class = "header-anchor" href = "#freebsd-环境编译工具" aria-label = "Permalink to “FreeBSD 环境编译工具”" > < / a > < / h2 > < p > FreeBSD 也是 Unix 系统,它的编译工具和 macOS 类似,你可以直接使用包管理 < code > pkg< / code > 安装 < code > clang< / code > 等编译工具,通过 < code > doctor< / code > 命令。< / p > < h2 id = "pkg-config-编译" tabindex = "-1" > pkg-config 编译 < a class = "header-anchor" href = "#pkg-config-编译" aria-label = "Permalink to “pkg-config 编译”" > < / a > < / h2 > < p > 如果你在使用 static-php-cli 构建静态 PHP 时仔细观察编译的日志,你会发现无论编译什么,都会先编译 < code > pkg-config< / code > ,这是因为 < code > pkg-config< / code > 是一个用于查找依赖库的工具。 在早期的 static-php-cli 版本中,我们直接使用了包管理安装的 < code > pkg-config< / code > 工具,但是这样会导致一些问题,例如:< / p > < ul > < li > 即使指定了 < code > PKG_CONFIG_PATH< / code > , < code > pkg-config< / code > 也会尝试从系统路径中查找依赖包。< / li > < li > 由于 < code > pkg-config< / code > 会从系统路径中查找依赖包,所以如果系统中存在同名的依赖包,可能会导致编译失败。< / li > < / ul > < p > 为了避免以上问题,我们将 < code > pkg-config< / code > 编译到用户态的 < code > buildroot/bin< / code > 内并使用,使用了 < code > --without-sysroot< / code > 等参数来避免从系统路径中查找依赖包。< / 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 = "/zh/develop/source-module.html" data-v-e257564d > <!-- [ --> < span class = "desc" data-v-e257564d > Previous page< / span > < span class = "title" data-v-e257564d > 资源模块< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-e257564d > < a class = "VPLink link pager-link next" href = "/zh/develop/craft-yml.html" data-v-e257564d > <!-- [ --> < span class = "desc" data-v-e257564d > Next page< / span > < span c
2026-03-10 11:36:35 +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 h J X 0 - v 0 \ " , \ " d e p s - m a p - l i b . m d \ " : \ " B S s W 5 y J o \ " , \ " 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 \ " : \ " B X V v X O C g \ " , \ " e n _ g u i d e _ d e p s - m a p . m d \ " : \ " C y y 5 g Y q L \ " , \ " 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 \ " : \ " B h j s t j 7 v \ " , \ " 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 \ " : \ " C p u l - S Q I \ " , \ " 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 \ " : \ " D 7 R R v - 1 u \ " , \ " 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 \ " : \ " B n 7 U o U E Y \ " , \ " z h _ g u i d e _ d e p s - m a p . m d \ " : \ " B s m 1 J E 1 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 \ " : \ " B M O h d F V U \ " , \ " 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 \ " : \ " D 2 C B 8 h f N \ " , \ " 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 >