phpstatic.com icon indicating copy to clipboard operation
phpstatic.com copied to clipboard

tutorial on how to compile php into static binary build

Open nonvwvnon opened this issue 4 years ago • 3 comments
trafficstars

thank you for sharing the static binary and explanation . i am using musl to do static binary build and able to get most of the binary in static build. It is only when i try to compile php using musl gcc that i run into problem. i assume you are using gcc to create these static binary ?

May i know are you able to share tutorial on how to compile php into static binary build and your email contact . i can follow up on question in regard to compilation privately rather post on public message board.

nonvwvnon avatar Apr 13 '21 06:04 nonvwvnon

The process is a bit complex, I will try explain here:

  1. patch the source code to remove all dynamic library code.

  2. use a compile wrapper script like ccache to build shared binary .

#!/bin/bash
echo /usr/bin/musl-gcc $@ >> ~/php_build_gcc.sh
/usr/bin/gcc $@
exit $?

I use this script to record all the build command into a shell script, there is ~/php_build_gcc.sh , ~/php_build_gcc++.sh, , ~/php_build_gcc++.sh, ~/php_build_linker.sh.

  1. modify the scripts to remove all unwanted flags like -fpie, -shared, and you also need modify the linker to made it generate static binary.

  2. clear all shared object file, then run the scripts to build the new static binary. you can write a script like make to skip the already exists object file by time.

  3. it will stop some where in the build process, you may need modify php_config.h and scripts or add patch to made it continue.

  4. you maybe need adjust static library orders at link step to avoid symbol problem.

I suggestion disable all extensions when you start.

phpstatic avatar Apr 14 '21 13:04 phpstatic

i have problem compile openssl,curl into the new php8.0.12 and latest php7 . private message your email so i can drop down more info on the compilation process. do 'info (at) phpstatic.com' able to reach you ?

nonvwvnon avatar Nov 03 '21 10:11 nonvwvnon

Anymore details on this @phpstatic I would like to try compiling myself.

Could you go into more detail here?

  1. patch the source code to remove all dynamic library code.

heyjordn avatar Jul 20 '23 02:07 heyjordn