I need to create a static library to run it in a docker container. When running my code with go run main.go
it just runs smoothly. However, things get complicated when I try to build my code as a static program (re-compile all dynamic dependencies into a standalone lib, including shared libraries).
My app depends on a C shared library located in my /usr/local/lib/librandom_c.so
, while my app source code is located in $GOPATH/src/github.com/<user>/myapp
.
When I build the app without trying to statically link the shared library, it works without complaining:
go build -a -o hello .
...but then docker complains that the shared library does not exist (using from scratch).
So far I have tried many combinations to statically build my app:
go build -a -ldflags '-linkmode "external" -extldflags "-static"' -o hello .
gives an error:
cannot find -lrandom_c
How do I statically link my lib?