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

Reply via email to