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" >
< title > 系统编译工具 | static-php-cli< / title >
< meta name = "description" content = "Build single static PHP binary, with PHP project together, with popular extensions included." >
< meta name = "generator" content = "VitePress v1.2.3" >
2025-06-09 11:33:45 +00:00
< link rel = "preload stylesheet" href = "/assets/style.B_PHkrN1.css" as = "style" >
2024-07-01 02:35:17 +00:00
2024-10-05 07:34:40 +00:00
< script type = "module" src = "/assets/app.D3H8Y1BO.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 = "" >
2024-10-05 07:34:40 +00:00
< link rel = "modulepreload" href = "/assets/chunks/framework.gjrnbxUT.js" >
< link rel = "modulepreload" href = "/assets/chunks/theme.5IQMzWyn.js" >
< link rel = "modulepreload" href = "/assets/zh_develop_system-build-tools.md.Ds53VEw1.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-05-20 02:08:00 +00:00
< div id = "app" > < div class = "Layout" data-v-5d98c3a5 > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-0f60ec36 > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-0f60ec36 > Skip to content < / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-5d98c3a5 data-v-ae24b3ad > < div class = "VPNavBar has-sidebar top" data-v-ae24b3ad data-v-ccf7ddec > < div class = "wrapper" data-v-ccf7ddec > < div class = "container" data-v-ccf7ddec > < div class = "title" data-v-ccf7ddec > < div class = "VPNavBarTitle has-sidebar" data-v-ccf7ddec data-v-ab179fa1 > < a class = "title" href = "/zh/" data-v-ab179fa1 > <!-- [ --> <!-- ] --> <!-- --> < span data-v-ab179fa1 > static-php-cli< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-ccf7ddec > < div class = "content-body" data-v-ccf7ddec > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-ccf7ddec > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-ccf7ddec data-v-7f418b0f > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-7f418b0f > Main Navigation< / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/guide/" tabindex = "0" data-v-7f418b0f data-v-9c663999 > <!-- [ --> < span data-v-9c663999 > 构建指南< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/develop/" tabindex = "0" data-v-7f418b0f data-v-9c663999 > <!-- [ --> < span data-v-9c663999 > 进阶< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/contributing/" tabindex = "0" data-v-7f418b0f data-v-9c663999 > <!-- [ --> < span data-v-9c663999 > 贡献< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/zh/faq/" tabindex = "0" data-v-7f418b0f data-v-9c663999 > <!-- [ --> < span data-v-9c663999 > FAQ< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-ccf7ddec data-v-88af2de4 data-v-b6c34ac9 > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "Change language" data-v-b6c34ac9 > < span class = "text" data-v-b6c34ac9 > < span class = "vpi-languages option-icon" data-v-b6c34ac9 > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-b6c34ac9 > < / span > < / span > < / button > < div class = "menu" data-v-b6c34ac9 > < div class = "VPMenu" data-v-b6c34ac9 data-v-e7ea1737 > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-88af2de4 > < p class = "title" data-v-88af2de4 > 简体中文< / p > <!-- [ --> < div class = "VPMenuLink" data-v-88af2de4 data-v-43f1e123 > < a class = "VPLink link" href = "/en/develop/system-build-tools.html" data-v-43f1e123 > <!-- [ --> English<!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-ccf7ddec data-v-e6aabb21 > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title = "Switch to dark theme" aria-checked = "false" data-v-e6aabb21 data-v-d1f28634 data-v-1d5665e3 > < span class = "check" data-v-1d5665e3 > < span class = "icon" data-v-1d5665e3 > <!-- [ --> < span class = "vpi-sun sun" data-v-d1f28634 > < / span > < span class = "vpi-moon moon" data-v-d1f28634 > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-ccf7ddec data-v-0394ad82 data-v-7bc22406 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/crazywhalecc/static-php-cli" aria-label = "github" target = "_blank" rel = "noopener" data-v-7bc22406 data-v-eee4e7cb > < span class = "vpi-social-github" / > < / a > <!-- ] --> < / div > < div class = "VPFlyout VPNavBarExtra extra" data-v-ccf7ddec data-v-d0bd9dde data-v-b6c34ac9 > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "extra navigation" data-v-b6c34ac9 > < span class = "vpi-more-horizontal icon" data-v-b6c34ac9 > < / span > < / button > < div class = "menu" data-v-b6c34ac9 > < div class = "VPMenu" data-v-b6c34ac9 data-v-e7ea1737 > <!-- --> <!-- [ --> <!-- [ --> < div class = "group translations" data-v-d0bd9dde > < p class = "trans-title" data-v-d0bd9dde > 简体中文< / p > <!-- [ --> < div class = "VPMenuLink" data-v-d0bd9dde data-v-43f1e123 > < a class = "VPLink link" href = "/en/develop/system-build-tools.html" data-v-43f1e123 > <!-- [ --> English<!-- ] --> < / a > < / div > <!-- ] --> < / div > < div class = "
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 >
< 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- vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > < / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < 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 vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > dockerfile< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < 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 >
< 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 >
< 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 vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > bash< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < 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 >
< 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-05-20 02:08:00 +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" > 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-39a288b8 data-v-d4a0bba5 > <!-- [ --> <!-- ] --> <!-- --> < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-d4a0bba5 > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-d4a0bba5 > Pager< / span > < div class = "pager" data-v-d4a0bba5 > < a class = "VPLink link pager-link prev" href = "/zh/develop/source-module.html" data-v-d4a0bba5 > <!-- [ --> < span class = "desc" data-v-d4a0bba5 > Previous page< / span > < span class = "title" data-v-d4a0bba5 > 资源模块< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-d4a0bba5 > < a class = "VPLink link pager-link next" href = "/zh/develop/craft-yml.html" data-v-d4a0bba5 > <!-- [ --> < span class = "desc" data-v-d4a0bba5 > Next page< / span > < span class = "tit
2025-06-09 11:33:45 +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 ( " { \ " e n _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " C s Y 8 m x 8 F \ " , \ " 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 L l o o o h w \ " , \ " 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 6 v a A w N 3 \ " , \ " e n _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " C d O H R 0 e z \ " , \ " d e p s - c r a f t - y m l . m d \ " : \ " D d O L H 9 f b \ " , \ " e n _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " D G d 8 P e M _ \ " , \ " e n _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " 0 X o s m i y O \ " , \ " e n _ g u i d e _ e n v - v a r s . m d \ " : \ " C M H j d d f B \ " , \ " z h _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " D W M l B D v T \ " , \ " z h _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " B - 0 R M S S w \ " , \ " e n _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " C R 2 n D L f 8 \ " , \ " e n _ g u i d e _ a c t i o n - b u i l d . m d \ " : \ " B K a m B a z h \ " , \ " e n _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " B V b 6 3 i - q \ " , \ " e n _ d e v e l o p _ i n d e x . m d \ " : \ " B 7 _ c 9 Y Y a \ " , \ " d e p s - m a p - l i b . m d \ " : \ " D 1 3 F v K 2 Q \ " , \ " e n _ d e v e l o p _ s t r u c t u r e . m d \ " : \ " B A 5 P D I s e \ " , \ " e n _ f a q _ i n d e x . m d \ " : \ " D k 3 Q 4 Z l V \ " , \ " d e p s - m a p - e x t . m d \ " : \ " C K p f V u 5 J \ " , \ " e n _ i n d e x . m d \ " : \ " C b p b 4 i A g \ " , \ " e n _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " D _ s z q p v 1 \ " , \ " z h _ i n d e x . m d \ " : \ " L s l J 1 U M p \ " , \ " e n _ g u i d e _ e x t e n s i o n s . m d \ " : \ " C v N q 1 b 9 J \ " , \ " z h _ d e v e l o p _ d o c t o r - m o d u l e . m d \ " : \ " D g F A P T 6 E \ " , \ " z h _ g u i d e _ e x t e n s i o n - n o t e s . m d \ " : \ " B w A Q 8 P k y \ " , \ " 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 \ " : \ " D s 5 3 V E w 1 \ " , \ " z h _ g u i d e _ c l i - g e n e r a t o r . m d \ " : \ " B Q o v O B 6 2 \ " , \ " z h _ g u i d e _ b u i l d - o n - w i n d o w s . m d \ " : \ " B x V E Y T 8 r \ " , \ " z h _ g u i d e _ d e p s - m a p . m d \ " : \ " D u T y z T h f \ " , \ " z h _ g u i d e _ e n v - v a r s . m d \ " : \ " C - N 0 X 5 F V \ " , \ " z h _ d e v e l o p _ p h p - s r c - c h a n g e s . m d \ " : \ " D f 0 - N c B w \ " , \ " e n _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " B 3 k - N l - b \ " , \ " e n _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " B U 7 H L q G h \ " , \ " z h _ d e v e l o p _ s o u r c e - m o d u l e . m d \ " : \ " D 0 o d L s H X \ " , \ " e n _ g u i d e _ i n d e x . m d \ " : \ " B S c d G P a V \ " , \ " e x t e n s i o n s . m d \ " : \ " B 7 v V U i h c \ " , \ " e n _ g u i d e _ t r o u b l e s h o o t i n g . m d \ " : \ " C T x n P J x K \ " , \ " i n d e x . m d \ " : \ " m K X t y w C A \ " , \ " z h _ c o n t r i b u t i n g _ i n d e x . m d \ " : \ " B v g d a h x O \ " , \ " z h _ g u i d e _ e x t e n s i o n s . m d \ " : \ " H v i Y R h A 7 \ " , \ " z h _ d e v e l o p _ c r a f t - y m l . m d \ " : \ " C r g e u r k 7 \ " , \ " z h _ d e v e l o p _ i n d e x . m d \ " : \ " - C P p D f M x \ " , \ " e n _ g u i d e _ d e p s - m a p . m d \ " : \ " C 7 t 3 A g g N \ " , \ " z h _ f a q _ i n d e x . m d \ " : \ " C G J w i s r - \ " , \ " z h _ g u i d e _ b u i l d - w i t h - g l i b c . m d \ " : \ " 6 W r 3 x g O s \ " , \ " z h _ g u i d e _ m a n u a l - b u i l d . m d \ " : \ " R x 1 x s y X 8 \ " , \ " e x t e n s i o n - n o t e s . m d \ " : \ " B w 8 x Y O i e \ " , \ " z h _ g u i d e _ i n d e x . m d \ " : \ " 2 0 g e d 7 P 4 \ " , \ " z h _ g u i d e _ t r o u b l e s h o o t i n g . m d \ " : \ " D A r 4 n 5 J 3 \ " } " ) ; 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 \ " } ] } , \ " 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 - m o d u l e \ " } ] } , { \ " t e x t \ " : \ " E x t r a \ " , \ " i t e m s \ " : [ { \ " t e x t \ " : \ " C o m p i l a t i o n T o o l s \ " , \ " l i n k \ " : \ " / 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 \ "
2024-07-01 02:35:17 +00:00
< / body >
< / html >