[swift-users] statically link the standard library on Linux

Dmitri Gribenko gribozavr at gmail.com
Wed Feb 17 15:49:39 CST 2016

On Wed, Feb 17, 2016 at 12:40 PM, Drew Crawford via swift-users
<swift-users at swift.org> wrote:
> I traced this down to the sourcecode after I posted here:
> https://bugs.swift.org/browse/SR-730
> tll;dr the standard library is forcibly dynamically-linked on Linux, and we
> need a way to opt out of that from the swift frontend.  I have not gone
> further with that since A) my C++-foo is not very excellent and B) core
> hasn't blessed any particular solution I proffered in that thread.  If you
> can make progress there I would be grateful.
> Then it is just a matter of getting the flags right; in practice, OSX wants
> -L path/to/swift_static -lc++ -framework Foundation -Xlinker
> -force_load_swift_libs, whereas Linux wants (I believe) -licuuc -licu18n
> -lbsd /path/to/swift_static/a.a /path/to/swift_static/b.a
> /path/to/swift_static/c.a ...  There may be an equivalent to
> force_load_swift_libs that knows what libs to load, but I haven't found it
> yet.

We also want to move to using swift_begin.o and swift_end.o files
instead of the linker script.  With these files, it is *critical* that
they are added at the very beginning and at the very end of the
command line, otherwise one is guaranteed to get a subtle silent

I think we need to add a user-friendly driver-level flag for static
linking, that allows to decide on per-library basis.


(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/

More information about the swift-users mailing list