Open
Description
What happened?
Hello,
This is list of custom binary compilation pains that I've encountered. Let's go:
- build-static.sh should check go version >= 1.23.0 before even trying to compile:
go: github.com/dunglas/mercure/[email protected] requires go >= 1.23.0 (running go 1.22.9; GOTOOLCHAIN=local)
2025/04/02 23:54:48 [FATAL] exit status 1
- cgo: #cgo nocallback disabled until Go 1.23 ?
2025/04/02 23:00:30 [INFO] Build environment ready
2025/04/02 23:00:30 [INFO] Building Caddy
2025/04/02 23:00:30 [INFO] exec (timeout=0s): /usr/bin/go mod tidy -e
2025/04/02 23:00:30 [INFO] exec (timeout=0s): /usr/bin/go build -o /root/frankenphp/dist/frankenphp-linux-x86_64 -buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags -linkmode=external -extldflags '-static-pie -Wl,-z,stack-size=0x80000' -w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP 729cf9bba15e80e5f78f2a6f5ff1ea52a72fef10 PHP 8.4.5 Caddy'
# github.com/dunglas/frankenphp
cgo: #cgo nocallback disabled until Go 1.23
2025/04/02 23:00:46 [INFO] Cleaning up temporary folder: /tmp/buildenv_2025-04-02-2300.2171042982
2025/04/02 23:00:46 [FATAL] exit status 1
- running gcc failed?
2025/04/03 00:47:52 [INFO] exec (timeout=0s): /usr/local/go/bin/go build -o /root/frankenphp/dist/frankenphp-linux-x86_64 -buildmode=pie -tags cgo,netgo,osusergo,static_build,nobadger,nomysql,nopgx -ldflags -linkmode=external -extldflags '-static-pie -Wl,-z,stack-size=0x80000' -w -s -X 'github.com/caddyserver/caddy/v2.CustomVersion=FrankenPHP 729cf9bba15e80e5f78f2a6f5ff1ea52a72fef10 PHP 8.4.5 Caddy'
# caddy
/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/gcc -m64 -s -Wl,-z,relro -pie -Wl,--build-id=0xe1fdbad1d1cdc7b23ce9ea6066a3a543e51f4276 -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=crosscall2 -Wl,--export-dynamic-symbol=go_apache_request_headers -Wl,--export-dynamic-symbol=go_frankenphp_after_script_execution -Wl,--export-dynamic-symbol=go_frankenphp_before_script_execution -Wl,--export-dynamic-symbol=go_frankenphp_finish_php_request -Wl,--export-dynamic-symbol=go_frankenphp_finish_worker_request -Wl,--export-dynamic-symbol=go_frankenphp_main_thread_is_ready -Wl,--export-dynamic-symbol=go_frankenphp_on_thread_shutdown -Wl,--export-dynamic-symbol=go_frankenphp_shutdown_main_thread -Wl,--export-dynamic-symbol=go_frankenphp_worker_handle_request_start -Wl,--export-dynamic-symbol=go_get_custom_php_ini -Wl,--export-dynamic-symbol=go_getenv -Wl,--export-dynamic-symbol=go_getfullenv -Wl,--export-dynamic-symbol=go_handle_file_watcher_event -Wl,--export-dynamic-symbol=go_is_context_done -Wl,--export-dynamic-symbol=go_log -Wl,--export-dynamic-symbol=go_putenv -Wl,--export-dynamic-symbol=go_read_cookies -Wl,--export-dynamic-symbol=go_read_post -Wl,--export-dynamic-symbol=go_register_variables -Wl,--export-dynamic-symbol=go_sapi_flush -Wl,--export-dynamic-symbol=go_ub_write -Wl,--export-dynamic-symbol=go_write_headers -Wl,--compress-debug-sections=zlib /tmp/go-link-611883084/go.o /tmp/go-link-611883084/000000.o /tmp/go-link-611883084/000001.o /tmp/go-link-611883084/000002.o /tmp/go-link-611883084/000003.o /tmp/go-link-611883084/000004.o /tmp/go-link-611883084/000005.o /tmp/go-link-611883084/000006.o /tmp/go-link-611883084/000007.o /tmp/go-link-611883084/000008.o /tmp/go-link-611883084/000009.o /tmp/go-link-611883084/000010.o /tmp/go-link-611883084/000011.o /tmp/go-link-611883084/000012.o /tmp/go-link-611883084/000013.o /tmp/go-link-611883084/000014.o /tmp/go-link-611883084/000015.o /tmp/go-link-611883084/000016.o /tmp/go-link-611883084/000017.o /tmp/go-link-611883084/000018.o /tmp/go-link-611883084/000019.o /tmp/go-link-611883084/000020.o /tmp/go-link-611883084/000021.o /tmp/go-link-611883084/000022.o /tmp/go-link-611883084/000023.o /tmp/go-link-611883084/000024.o /tmp/go-link-611883084/000025.o /tmp/go-link-611883084/000026.o /tmp/go-link-611883084/000027.o /tmp/go-link-611883084/000028.o /tmp/go-link-611883084/000029.o /tmp/go-link-611883084/000030.o /tmp/go-link-611883084/000031.o /tmp/go-link-611883084/000032.o -Wl,-O1 -pie /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlicommon.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlienc.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlidec.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libwatcher-c.a -L/root/frankenphp/dist/static-php-cli/buildroot/lib -lphp -lc -lyaml -ltidy -llz4 -lsqlite3 -lpq -lpgport -lpgcommon -lreadline -lonig -llber -lldap -lsodium -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI -lzip -lheif -laom -lde265 -ltiff -lintl -lncurses -lgmp -lfreetype -ljpeg -lturbojpeg -lwebp -lwebpdecoder -lwebpdemux -lwebpmux -lsharpyuv -lavif -lpng16 -lcurl -lzstd -lnghttp2 -lxml2 -licui18n -licuio -licuuc -licudata -liconv -lcharset -lbrotlidec -lbrotlienc -lbrotlicommon -lssh2 -lssl -lcrypto -lz -lbz2 -lgomp -lstdc++ -lresolv -L/usr/local/lib -L/usr/lib -lphp -ldl -lm -lutil -Wl,-O1 -pie /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlicommon.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlienc.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlidec.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libwatcher-c.a -L/root/frankenphp/dist/static-php-cli/buildroot/lib -lphp -lc -lyaml -ltidy -llz4 -lsqlite3 -lpq -lpgport -lpgcommon -lreadline -lonig -llber -lldap -lsodium -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI -lzip -lheif -laom -lde265 -ltiff -lintl -lncurses -lgmp -lfreetype -ljpeg -lturbojpeg -lwebp -lwebpdecoder -lwebpdemux -lwebpmux -lsharpyuv -lavif -lpng16 -lcurl -lzstd -lnghttp2 -lxml2 -licui18n -licuio -licuuc -licudata -liconv -lcharset -lbrotlidec -lbrotlienc -lbrotlicommon -lssh2 -lssl -lcrypto -lz -lbz2 -lgomp -lstdc++ -lbrotlicommon -lbrotlidec -lbrotlienc -Wl,-O1 -pie /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlicommon.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlienc.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlidec.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libwatcher-c.a -L/root/frankenphp/dist/static-php-cli/buildroot/lib -lphp -lc -lyaml -ltidy -llz4 -lsqlite3 -lpq -lpgport -lpgcommon -lreadline -lonig -llber -lldap -lsodium -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI -lzip -lheif -laom -lde265 -ltiff -lintl -lncurses -lgmp -lfreetype -ljpeg -lturbojpeg -lwebp -lwebpdecoder -lwebpdemux -lwebpmux -lsharpyuv -lavif -lpng16 -lcurl -lzstd -lnghttp2 -lxml2 -licui18n -licuio -licuuc -licudata -liconv -lcharset -lbrotlidec -lbrotlienc -lbrotlicommon -lssh2 -lssl -lcrypto -lz -lbz2 -lgomp -lstdc++ -lpthread -Wl,-O1 -pie /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlicommon.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlienc.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlidec.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libwatcher-c.a -L/root/frankenphp/dist/static-php-cli/buildroot/lib -lphp -lc -lyaml -ltidy -llz4 -lsqlite3 -lpq -lpgport -lpgcommon -lreadline -lonig -llber -lldap -lsodium -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI -lzip -lheif -laom -lde265 -ltiff -lintl -lncurses -lgmp -lfreetype -ljpeg -lturbojpeg -lwebp -lwebpdecoder -lwebpdemux -lwebpmux -lsharpyuv -lavif -lpng16 -lcurl -lzstd -lnghttp2 -lxml2 -licui18n -licuio -licuuc -licudata -liconv -lcharset -lbrotlidec -lbrotlienc -lbrotlicommon -lssh2 -lssl -lcrypto -lz -lbz2 -lgomp -lstdc++ -Wl,-O1 -pie /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlicommon.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlienc.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libbrotlidec.a /root/frankenphp/dist/static-php-cli/buildroot/lib/libwatcher-c.a -L/root/frankenphp/dist/static-php-cli/buildroot/lib -lphp -lc -lyaml -ltidy -llz4 -lsqlite3 -lpq -lpgport -lpgcommon -lreadline -lonig -llber -lldap -lsodium -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI -lzip -lheif -laom -lde265 -ltiff -lintl -lncurses -lgmp -lfreetype -ljpeg -lturbojpeg -lwebp -lwebpdecoder -lwebpdemux -lwebpmux -lsharpyuv -lavif -lpng16 -lcurl -lzstd -lnghttp2 -lxml2 -licui18n -licuio -licuuc -licudata -liconv -lcharset -lbrotlidec -lbrotlienc -lbrotlicommon -lssh2 -lssl -lcrypto -lz -lbz2 -lgomp -lstdc++ -lwatcher-c -lstdc++ -static-pie -Wl,-z,stack-size=0x80000
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lresolv
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
2025/04/03 00:49:12 [INFO] Cleaning up temporary folder: /tmp/buildenv_2025-04-03-0047.2774774831
2025/04/03 00:49:12 [FATAL] exit status 1
- Try running commands from: https://frankenphp.dev/docs/static/#glibc-based-mostly-static-build-with-dynamic-extension-support:
docker buildx bake --load static-builder-gnu
docker cp $(docker create --name static-builder-gnu dunglas/frankenphp:static-builder-gnu):/go/src/app/dist/frankenphp-linux-$(uname -m) frankenphp ; docker rm static-builder-gnu
Not found as dunglas/frankenphp:static-builder-gnu
should be dunglas/frankenphp:static-builder-gnu-gnu
?
That's all for now.
Sadly, moving back again to php-fpm 😢.
Hopefully, Mongodb extension will accepted.
Build Type
Standalone binary
Worker Mode
No
Operating System
GNU/Linux
CPU Architecture
x86_64
PHP configuration
not applicable