Как правильно подойти к вопросу: какой самый стабильный и лучший вариант собрать QUIC для curl [cross-compilation]?
По вводным: пробую собрать с максимальными "плюшками"
По вводным: export GSASL_DIR=/root/curl-build/winlibs/gsasl-mingw
По вводным: nGHTTP3_DIR=/root/curl-build/winlibs/nghttp3-1.12.0-mingw
По вводным: export CPPFLAGS="-I${NGHTTP3_DIR}/include -I${GSASL_DIR}/include"
По вводным: export LDFLAGS="-L${NGHTTP3_DIR}/lib -L${GSASL_DIR}/lib -lgsasl"
Export LIBS="-lgsasl"
По вводным: export PKG_CONFIG_PATH="/root/curl-build/winlibs/libpsl-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/libidn2-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/nghttp3-1.12.0-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/libunistring-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/libiconv-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/openssl-quictls-mingw/lib64/pkgconfig:\
По вводным: /root/curl-build/winlibs/zlib-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/ngtcp2-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/brotli-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/zstd-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/nghttp2-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/libgsasl-mingw/lib/pkgconfig:\
По вводным: /root/curl-build/winlibs/libssh2-mingw/lib/pkgconfig"
По вводным: cC=$T-gcc AR=$T-ar RANLIB=$T-ranlib STRIP=$T-strip \
По вводным:../curl-8.16.0/configure --host=$T --build=$(uname -m)-ПК-linux-gnu \
По вводным: --prefix=/root/curl-build/winlibs/curl-mingw-latest \
По вводным: --with-libgsasl=/root/curl-build/winlibs/gsasl-mingw \
По вводным: --with-zlib=/root/curl-build/winlibs/zlib-mingw \
По вводным: --cache-file=config.cache \
По вводным: --with-openssl=/root/curl-build/winlibs/openssl-quictls-mingw \
По вводным: --with-ca-bundle="cacert.crt" \
--with-ca-fallback \
По вводным: --with-ca-embed="/root/curl-8.16.0/curl-ca-bundle.crt" \
По вводным: --with-nghttp3=/root/curl-build/winlibs/nghttp3-1.12.0-mingw \
По вводным: --with-nghttp2=/root/curl-build/winlibs/nghttp2-mingw \
По вводным: --with-ngtcp2=/root/curl-build/winlibs/ngtcp2-mingw \
По вводным: --with-brotli=/root/curl-build/winlibs/brotli-mingw \
По вводным: --with-zstd=/root/curl-build/winlibs/zstd-mingw \
По вводным: --with-libidn2=/root/curl-build/winlibs/libidn2-mingw \
По вводным: --with-libpsl=/root/curl-build/winlibs/libpsl-mingw \
По вводным: --with-libssh2=/root/curl-build/winlibs/libssh2-mingw \
По вводным: --with-openssl-quic=/root/curl-build/winlibs/openssl-quictls-mingw \
--enable-http3 \
--enable-alt-svc \
--enable-headers-api \
--enable-hsts \
--enable-websockets \
--enable-ipv6 \
По вводным: --enable-threaded-resolver \
--enable-httpsrr \
--enable-sspi \
--enable-ssls-export \
--enable-shared
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для curl с QUIC самый стабильный путь сейчас — не пытаться собрать “всё и сразу”, а выбрать одну TLS/QUIC-связку и довести её до воспроизводимой сборки. Для Windows cross-compilation через mingw обычно меньше боли с
ngtcp2 + nghttp3 + OpenSSL/quictlsили с готовыми vcpkg/llvm-mingw рецептами, чем с ручным смешиванием библиотек.Важно: HTTP/3 в curl требует согласованную тройку:
curl nghttp3 ngtcp2 TLS backend с QUIC support
Проверьте, что
pkg-configвидит именно mingw-библиотеки, а не linux-host версии:export PKG_CONFIG_LIBDIR=/root/curl-build/winlibs/lib/pkgconfig pkg-config --libs ngtcp2 pkg-config --libs nghttp3
Не смешивайте
LDFLAGSиLIBSнаугад. Если зависимость нужна через pkg-config, лучше чтобы она приходила оттуда. Иначе легко получить ситуацию, где headers от одной сборки, а lib — от другой.Базовый порядок сборки:
--with-ngtcp2и--with-nghttp3;curl -V.В результате
curl -Vдолжен показать HTTP3:Features: ... HTTP3 ... ngtcp2 nghttp3
Итог: выберите одну поддерживаемую связку и фиксируйте версии. Для cross-compilation критично, чтобы
pkg-config, include и lib смотрели в один mingw-prefix. “Максимум плюшек” лучше добавлять после того, как минимальная HTTP/3-сборка стабильно работает.