unortunately, several large toolkits of various types make this impossible because they themselves use dynamic (runtime-driven) loading of shared objects. GTK (and its dependency stack) is a particular offender there, but I believe the same is true of Qt. You can't statically link against this type of toolkit if your goal is to end up with a self-contained binary. the g* stack has made a few improvements in this area in recent years, but AFAIK it still isn't possible to build a self-contained binary. JUCE differs from this, I believe.