Why does beam.smp depends on libstdc++.so.6?

Hi guys

When testing my Erlang release under Docker, I found that beam.smp depends on libstdc++.so.6.

I thought Erlang was made using the C programming language, not C++.
We compile Erlang at work using kerl. Can anyone explain this C++ dependency?

$ uname -a
Linux xxxx 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 GNU/Linux

$ ldd /erlang/erts-15.1.2/bin/beam.smp
	linux-vdso.so.1 (0x00007ffe2019f000)
	libtinfo.so.6 => /lib/x86_64-linux-gnu/libtinfo.so.6 (0x00007f83689c4000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8367bd4000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8367aed000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f83689a4000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f83678c4000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8368a04000)

Thanks

I guess it’s because BeamASM (JIT) is based on GitHub - asmjit/asmjit: Low-latency machine code generation , which is written in C++.

4 Likes

@ieQu1 Thanks a lot. Completely forgot JIT.

Also a few modules in the wx library are written in C++.

1 Like

@rlipscombe Thanks. We disable wx and anything useless for us in PROD when building Erlang.
The issue was JIT as @ieQu1 pointed out.