krankerl icon indicating copy to clipboard operation
krankerl copied to clipboard

Binary releases don't work with musl libc

Open juliushaertl opened this issue 5 years ago • 4 comments

I was trying to get krankerl working inside of a alpine docker container. However it seems the binary is not compatible with musl libc, which is default in alpine.

/usr/local/bin # ldd krankerl 
	/lib64/ld-linux-x86-64.so.2 (0x7fac0726c000)
	libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fac0726c000)
	ld-linux-x86-64.so.2 => /lib/ld-linux-x86-64.so.2 (0x7fac0683c000)
	libcurl-gnutls.so.4 => /usr/lib/libcurl-gnutls.so.4 (0x7fac065ce000)
	libssl.so.1.0.0 => /lib/libssl.so.1.0.0 (0x7fac06365000)
	libcrypto.so.1.0.0 => /lib/libcrypto.so.1.0.0 (0x7fac05f46000)
	libz.so.1 => /lib/libz.so.1 (0x7fac05d2f000)
	libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x7fac0726c000)
	libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7fac0726c000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7fac05b1d000)
	libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fac0726c000)
	libnghttp2.so.14 => /usr/lib/libnghttp2.so.14 (0x7fac058fc000)
	libssh2.so.1 => /usr/lib/libssh2.so.1 (0x7fac056d4000)
	libssl.so.45 => /lib/libssl.so.45 (0x7fac05488000)
	libcrypto.so.43 => /lib/libcrypto.so.43 (0x7fac050dd000)
Error relocating krankerl: __vsnprintf_chk: symbol not found
Error relocating krankerl: __fprintf_chk: symbol not found
Error relocating krankerl: __strncpy_chk: symbol not found
Error relocating krankerl: __rawmemchr: symbol not found
Error relocating krankerl: __fdelt_chk: symbol not found
Error relocating krankerl: __memcpy_chk: symbol not found
Error relocating krankerl: __register_atfork: symbol not found
Error relocating krankerl: __snprintf_chk: symbol not found
Error relocating krankerl: __res_init: symbol not found

Is there a way to make the binary compatible with the current build pipeline? :wink:

juliushaertl avatar Mar 27 '19 21:03 juliushaertl

Good point. I think I gave this a try in the beginnings of developing this tool but I forgot if (and if not then why) it worked with musl. Let me have another look.

ChristophWurst avatar Apr 02 '19 12:04 ChristophWurst

Okay, this is a bit complicated as stuff like openssl has to be compiled as well (obviously). So the simple approach like

PKG_CONFIG_ALLOW_CROSS=1 cargo build --release --target=x86_64-unknown-linux-musl

won't quite work.

ChristophWurst avatar Apr 02 '19 13:04 ChristophWurst

https://github.com/emk/rust-musl-builder includes musl versions of openssl (and some others) to allow for easy building

icewind1991 avatar Mar 03 '20 16:03 icewind1991

Could this be reopened @ChristophWurst @icewind1991? As I tried the binary from https://github.com/ChristophWurst/krankerl/releases on alpine and it doesn't seem to work, could be resolved by https://github.com/ChristophWurst/krankerl/pull/903

Pytal avatar Dec 14 '21 20:12 Pytal