Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tutorial on how to compile php into static binary build #1

Open
nonvwvnon opened this issue Apr 13, 2021 · 3 comments
Open

tutorial on how to compile php into static binary build #1

nonvwvnon opened this issue Apr 13, 2021 · 3 comments

Comments

@nonvwvnon
Copy link

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.

@phpstatic
Copy link
Owner

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.

@nonvwvnon
Copy link
Author

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 ?

@heyjordn
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants