by Chris Matthews
replace fragile version check with a better fragile version check
At least on Apple platforms it is not always the case that you can
compile this return 0 app without some flags relating to targets etc,
which we have no clue about this early in startup.
Printing the ld version directly fails because ld as invoked by clang
still tries to link and can't find main. However, we can fix that by
passing -dynamiclib so it does not look for main.