This is just a quick question which ive seen many discussions of before.
But the general answer is "dynamic libraries as if someone has a new version of the library it will use the newest version."
But most of the libraries I'm using like GLFW, GLEW and the MinGW libraries (libgcc and libstdc++) won't be on most computers.
So in that case, where that previous argument is invalid, which one is better and why?
I assume this is targeted at Windows since you mention MinGW, .
Well, it's not mandatory in Windows that DLLs have to be installed in common system paths.
I'd use an installer software like NSIS and deploy them as DLLs in the same directory as the EXE.
One benefit is that if an update or patch has to be released that does not affect the dependencies, it can contain just the updated EXE and be a smaller download than a bloated statically linked version.
No point in "bumping" questions. We don't get paid so we answer when it's convenient. And if no one ever answers at all, it's either not been convenient or nobody knows. So just be patient.
Dynamic libraries have several benefits. They save disk space (no longer as big an issue as it used to be). They save RAM (still somewhat of an issue). And for complex functions, they can be upgraded to plug security exploits and fix bugs for a multitude of apps at the same time.
Windows originally had no idea of versioning on DLLs. There Could Be Only One. That led almost immediately to frustration with MFC.DLL and SOCKS. Ironically, at roughly the same time, the late, lamented Amiga OS understood the utility of having multiple versions of a shared libary and had included a version number as one of the criteria that an app would use for selecting one.
Linux/Unix also understand versioning, and use a 2-level (sometimes more) approach. You can open libtiff.so.5, or libtiff.so.5.2.2, depending on how necessary it is to reference a specific instance. Many times, less-specific library entries are actually links to more-specific ones, in fact.
If my fading memory doesn't fail me, Microsoft addressed this problem in .Net as well, but I haven't developed anything Windows-specific for a long time now.
Blitzlügen - Lies or information broadcast, but when called out the broadcaster does little or nothing is done to correct them, thus allowing those who wish to believe to accept them as truth.
Lügensturm - A barrage of Blitzlügen fired in such quick succession that it is essentially impossible to correct them all.
Don't count your weasels before they've popped. And now for a mulberry bush related tiny ad: