What is the current best practice for building a relocatable shared library?

The Q&A concerning building shared libraries appear to be quite old and there has been lots of development work in the related PackageCompiler.jl recently. So what is the current best practice for building a relocatable shared library? I need this for a customer who would like to call my program from a DLL on Windows. The module I built is quite self-contained and uses only fairly standard packages (LinearAlgebra, SparseArrays, Printf, and the like).