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.