Shared dynamic libraries do reduce the “wear and tear” on an SSD. The binaries are loaded a single time and shared across processes - slightly longer startup times for the dynamic linkage.
It is highly beneficial with large runtimes vs small standard library usage in tiny utilities. > On Jan 28, 2023, at 10:46 PM, Kurtis Rader <kra...@skepticism.us> wrote: > > > It does not surprise me that your shared run-time build takes more time than > the usual static build. The latter case is highly optimized while your use > case has probably been given very little consideration. I am also confused by > your argument for supporting linking against a shared Go runtime library. You > wrote earlier that the reason you want this is to "reduce ware (sic) and tear > on my SSD." I see no reason why linking against a shared Go run-time library > would reduce the "wear and tear" on your SSD. I think your premise is flawed. > >> On Sat, Jan 28, 2023 at 8:29 PM jlfo...@berkeley.edu >> <jlforr...@berkeley.edu> wrote: >> Thanks for the reply. I had mixed results. >> >> On Fedora 37, go version go1.19.4 linux/amd64, in /usr/local/go/src as root >> I ran >> >> go install -buildmode=shared std >> >> That seemed to work. >> >> In my normal working directory, as me, not root, I ran >> >> go build -linkshared *.go >> >> (I do a regular build in this directory by just running "go build *.go") >> >> That resulted in a whole bunch of error messages of the style >> >> go build internal/goarch: copying /tmp/go-build2481653269/b006/_pkg_.a: open >> /usr/local/go/pkg/linux_amd64_dynlink/internal/goarch.a: permission denied >> >> So I became root and ran go build -linkshared *.go again. >> >> This time it worked!! The result was 83584 byte binary, whereas the binary >> produced >> by the standard method is 4186764 bytes. That's a great savings!!! The small >> binary seemed >> to work fine. >> >> Just for yuks, I tried building my program as me again (not root). I got >> permission error messages >> again, but now they look like >> >> open /usr/local/go/pkg/linux_amd64_dynlink/archive/tar.shlibname: permission >> denied >> >> There are 238 such lines. >> >> There's another problem. Unlike what I would expect, it takes *longer* to >> build the shared version >> than the static version. >> >> As root >> >> [root@localhost]# time go build *.go >> >> real 0m0.298s >> user 0m0.346s >> sys 0m0.091s >> >> [root@localhost]# time go build -linkshared *.go >> >> real 0m1.441s >> user 0m1.193s >> sys 0m0.325s >> >> That doesn't seem right. >> >> Any advice? >> >> Cordially, >> Jon Forrest >> >>> On Saturday, January 28, 2023 at 7:51:25 PM UTC-8 Ian Lance Taylor wrote: >>> On Sat, Jan 28, 2023 at 11:27 AM jlfo...@berkeley.edu >>> <jlfo...@berkeley.edu> wrote: >>> > >>> > For people like me who have no intention of ever distributing a Go >>> > executable, I wonder >>> > if it would be useful, and possible, to link to a shared library version >>> > of the Go >>> > Runtime. This would make my binaries much smaller and would reduce ware >>> > and >>> > tear on my SSD. >>> > >>> > Of course, this presumes that such a shared library could be created in >>> > the first place. >>> > >>> > I did a quick Google and I didn't find this issue being previously >>> > discussed. >>> > >>> > Comments? >>> >>> At least on Linux systems it should work to run "go install >>> -buildmode=shared std" and then to build other Go programs with >>> "-linkshared". >>> >>> Ian >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/4dc94780-06e6-4aa3-a9b1-64b97dd85a5en%40googlegroups.com. > > > -- > Kurtis Rader > Caretaker of the exceptional canines Junior and Hank > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/CABx2%3DD-SBB%3DvFGYUGaXpf-8m6RH4HK4xEKjGUdMXMwjK90NMPg%40mail.gmail.com. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/6E3D7378-0994-44DE-A6E6-A71913D75EA1%40ix.netcom.com.