Remix.run Logo
jmmv 3 days ago

You need that glibc on the target system, and glibc doesn’t like static linking. How do you ship the built binary?

lokar 3 days ago | parent | next [-]

You include the target glibc as part of your toolchain

And, I always prefer to actually pick my glibc independently from the host os and ship it with the binary (generally in an OCI image). This way you can patch/update the host without breaking the service.

jmmv 3 days ago | parent | next [-]

Right, so you need to end up creating a container to package the glibc with the binary. Which is not very different from having sysroots.

But what about any tools compiled from source and used during the build? Those can also suffer from these issues.

lokar 3 days ago | parent [-]

Yeah, ideally you could build your toolchain from source on any platform. But, in some cases that’s not possible

remexre 3 days ago | parent | prev [-]

Does that result in working NSS?

lokar 3 days ago | parent [-]

I normally statically link as much as possible and avoid nss, but you can make that work as well, just include it along with glibc.

throwaway2046 2 days ago | parent | prev | next [-]

Is musl not an option? It's best to avoid glibc altogether if possible.

prpl 3 days ago | parent | prev [-]

no, you just need a compatible starlit/glibc. you pick an old version (e.g. RHEL8) or otherwise compile with multiple tool chains if you need newer glibc features