[swift-users] statically link the standard library on Linux
drew at sealedabstract.com
Wed Feb 17 14:40:01 CST 2016
I traced this down to the sourcecode after I posted here: https://bugs.swift.org/browse/SR-730 <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.
However as long as the Swift frontend forcibly injects the dynamic link we are SOL, so some progress needs to be made in the frontend first.
> On Feb 17, 2016, at 1:37 PM, Max Howell <max.howell at apple.com> wrote:
> We have a ticket open to implement static linking of swift libs.
> If anyone on the Swift team knows how to do this and can comment here then I’m sure we can get it implemented pretty quickly.
>> On Feb 13, 2016, at 7:54 PM, Drew Crawford via swift-users <swift-users at swift.org <mailto:swift-users at swift.org>> wrote:
>> Whenever I update the installed Linux snapshot, my binaries break, with errors of the form:
>> [programname]: symbol lookup error: [programname]: undefined symbol: _TFOs7Processau9argumentsGSaSS_
>> I assume this is the standard library symbol Process.arguments (which is used in my program).
>> I guess this is because the standard library is not statically linked/embedded in this executable. This happens by default on OSX, but I guess might not on Linux.
>> Is that a bug?
>> Is there a way to force statically link the standard library on Linux, so my binaries work without a recompile each new snapshot?
>> swift-users mailing list
>> swift-users at swift.org <mailto:swift-users at swift.org>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-users