Just for reference in case anyone else who utilizes static linking for any reason hits upon this issue, here is a working Dockerfile for libpq / postgresql 17
FROM postgres:17.0-alpine3.20 AS builder USER root WORKDIR /app RUN apk update && apk add --no-cache --update-cache \ openssl-libs-static \ libevent-static \ libxml2-static \ libedit-static \ libxslt-static \ sqlite-static \ openldap-dev \ libxslt-dev \ libxml2-dev \ libedit-dev \ openssl-dev \ zstd-static \ zlib-static \ lz4-static \ e2fsprogs \ keyutils \ zstd-dev \ zlib-dev \ gdbm-dev \ clang17 \ lz4-dev \ libldap \ bison \ curl \ perl \ make COPY <<EOF ./main.cpp #include<libpq-fe.h> int main(){return PQconnectdb("")==NULL;} EOF ARG KRB5=1.21.3 ARG KRB5MAJMIN=1.21 RUN curl -L https://kerberos.org/dist/krb5/$KRB5MAJMIN/krb5-$KRB5.tar.gz | tar xzf - RUN cd krb5-$KRB5/src && \ ./configure && make && make install && \ ./configure --disable-shared --enable-static && make && make install ARG SASL=2.1.28 RUN curl -L https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-$SASL/cyrus-sasl-$SASL.tar.gz | tar xzf - RUN cd cyrus-sasl-$SASL && ./configure --enable-static && make && make install RUN clang++ -static -o main main.cpp \ -L/usr/local/lib -lpq -lpgcommon_shlib -lpgport_shlib \ -lldap -lsasl2 -lssl -lcrypto -llber \ -lgssapi_krb5 \ -lkrb5 -lk5crypto -lcom_err -lkrb5support \ -lgdbm