Hi Mikael, > This is for compiling a c++ application that uses libpq with the -static > flag, the server compiles fine.
OK. I couldn't quite do this because the only Linux machine I have at the moment runs Raspbian and there doesn't seem to be a static glibc available for it. But here is how to achieve what you want *in theory*. First compile Postgres from the source code, for instance (change the flags as needed, you probably want a release build): ``` # sudo apt install clang-16 # git clean -dfx CFLAGS="-static" meson setup --buildtype debug -Dicu=disabled -Dldap=disabled -Dreadline=disabled -Dzlib=disabled -Dlz4=disabled -Dprefix=/home/eax/pginstall build ninja -C build ``` I recommend using Meson and Ninja. Autotools and Make are still supported but are slow and probably will be gone in a few years. The "ninja -C build" steps fail for me with various errors about the need for static glibc but I think it should work on other distributions and architectures. Next install Postgres. I use a script for this [1]: ``` ~/pgscripts/single-install-meson.sh ``` Change the script as needed - you probably don't need pg_ctl, createdb, etc for your task. Now in order to compile and execute your C++ program: ``` export PRFX=/home/eax/pginstall g++ -g -Wall -o test_libpq -I$PRFX/include -L$PRFX/lib/aarch64-linux-gnu/ test_libpq.cpp -lpq -static LD_LIBRARY_PATH=$PRFX/lib/aarch64-linux-gnu/ ./test_libpq ``` This being said I don't recall seeing anything about the support of static linking of libpq in the documentation [2]. To my knowledge this is not officially supported / tested / maintained which means you and your colleagues are on your own with the -static flag. Since you are already using Docker, perhaps the easiest thing to do would be to back the application and all its dependencies (dynamically linked) in a Docker container. Good luck. [1]: https://github.com/afiskon/pgscripts/ [2]: https://www.postgresql.org/docs/current/libpq.html -- Best regards, Aleksander Alekseev