Hi guys,
Does anybody know why PHP sources are compiled as shared objects only on linux, meaning that libtool is adding -fPIC -DPIC flags during compilation?
Shared objects are mandatory for building libphp7 library and module extensions, but why are they used for building binaries like php-fpm, php-cgi or php?
I just observed that binaries built with static objects are ~1% quicker at runtime for real live workloads like WordPress. Despite the fact that binary size is higher than the current version, there is a visible gain in terms of reduction of instructions retired per request and iTLB loads and misses.
I am wondering if it is possible to have static compilation enabled by default in the Makefile. I managed to do it by brute force as I am not an expert in libtool and auto tools (I tried to play with -enable-static flag but with no luck...). Not sure if current behavior is by intent or just a miss; or what constraints have to be considered for portability reasons for other non linux platforms.
Kind Regards,
Bogdan Andone