sgerrand / alpine-pkg-glibc

A glibc compatibility layer package for Alpine Linux
2.05k stars 280 forks source link

Missing symbols related to memory management #157

Closed jivanpal closed 3 years ago

jivanpal commented 3 years ago

Hello, I am trying to run a program pre-compiled from Rust that requires glibc, under Alpine in a Docker container. The program is Helium wallet v1.5.4.

Under Alpine 3.11.6, installing your glibc-2.33-r0 and then running the program (wallet) outputs:

./wallet: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory

And ldd wallet outputs:

        /lib64/ld-linux-x86-64.so.2 (0x7f9675163000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f967488f000)
        libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7f9675163000)
        libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f9675163000)
        libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7f9675163000)
        libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7f9675163000)
        ld-linux-x86-64.so.2 => /lib/ld-linux-x86-64.so.2 (0x7f967485c000)
Error relocating /lib/ld-linux-x86-64.so.2: unsupported relocation type 37
Error relocating wallet: __memcpy_chk: symbol not found
Error relocating wallet: __register_atfork: symbol not found
Error relocating wallet: __explicit_bzero_chk: symbol not found
Error relocating wallet: __res_init: symbol not found

Does that mean these symbols need to be implemented? Is there any timeline for this?

Thanks and regards

sgerrand commented 3 years ago

Hi there. The missing shared library you referenced, libgcc_s.so.1, was used during the compilation of the executable file wallet that you're using. It is not provided with the glibc package.

If you want to use one or more files on Alpine Linux which were compiled on a glibc based operating system, then you are responsible for ensuring that all of the shared libraries they need are available at runtime. I am unable to help you with this process.

Sorry that I can't be of more help, but this package was created as a convenience method. It's still provided as such. The caveat is that you will need advanced knowledge of the program you're trying to run in order to do so.