title: Various representations of -Bstatic flags in ld
body: <p>In manpage of <code>ld</code> (from binutils), there is this section about variations of <code>-Bstatic</code> flag:</p>
  
  <blockquote>
    <p>-Bstatic<br />
    -dn<br />
    -non_shared<br />
    -static<br />
    Do not link against shared libraries.  This is only meaningful on platforms for which shared libraries are supported.  <strong>The different variants of this option are for compatibility with various systems.</strong>  You may use this option multiple times on the command line: it affects library searching for -l options which follow it.  This option also implies <code>--unresolved-symbols=report-all</code>.  This option can be used with -shared.  Doing so means that a shared library is being created but that all of the library's external references must be resolved by pulling in entries from static libraries.</p>
  </blockquote>
  
  <p>My question is about the bolded sentence: exactly for which systems are these variants trying to be compatible? I have seen both <code>-Bstatic</code> and <code>-static</code> in various projects, but haven't seen anybody using the remaining two variants so far. For maximum compatibility (in terms of cross platform), which one is the best to use?</p>