-
Notifications
You must be signed in to change notification settings - Fork 6.2k
Closed
Description
Description
According to the Solidity documentation, installation instructions, the repository solc-bin and its mirror at binaries.soliditylang.org are supposed to contain static builds of the compiler. However, the following binaries in the folder linux-amd64
are dynamically linked.
solc-linux-amd64-v0.7.6+commit.7338295f
solc-linux-amd64-v0.8.0+commit.c7dfd78e
solc-linux-amd64-v0.8.1+commit.df193b15
solc-linux-amd64-v0.8.2+commit.661d1103
solc-linux-amd64-v0.8.3+commit.8d00100c
solc-linux-amd64-v0.8.4+commit.c7e474f2
solc-linux-amd64-v0.8.5+commit.a4f2e591
solc-linux-amd64-v0.8.6+commit.11564f7e
solc-linux-amd64-v0.8.7+commit.e28d00a7
solc-linux-amd64-v0.8.8+commit.dddeac2f
solc-linux-amd64-v0.8.9+commit.e5eed63a
solc-linux-amd64-v0.8.10+commit.fc410830
solc-linux-amd64-v0.8.11+commit.d7f03943
solc-linux-amd64-v0.8.12+commit.f00d7308
solc-linux-amd64-v0.8.13+commit.abaa5c0e
solc-linux-amd64-v0.8.14+commit.80d49f37
solc-linux-amd64-v0.8.15+commit.e14f2714
solc-linux-amd64-v0.8.16+commit.07a7930e
solc-linux-amd64-v0.8.17+commit.8df45f5f
solc-linux-amd64-v0.8.18+commit.87f61d96
solc-linux-amd64-v0.8.19+commit.7dd6d404
solc-linux-amd64-v0.8.20+commit.a1b79de6
solc-linux-amd64-v0.8.21+commit.d9974bed
solc-linux-amd64-v0.8.22+commit.4fc1097e
solc-linux-amd64-v0.8.23+commit.f704f362
solc-linux-amd64-v0.8.24+commit.e11b9ed9
solc-linux-amd64-v0.8.25+commit.b61c2a91
solc-linux-amd64-v0.8.26+commit.8a97fa7a
solc-linux-amd64-v0.8.27+commit.40a35a09
solc-linux-amd64-v0.8.28+commit.7893614a
These dynamically linked binaries will not run on Linux versions built around a different libc
.
E.g., such binaries won't run on Alpine Linux, which ships with musl libc
instead of glibc
.
Steps to Reproduce
Run ldd
or file
on the binaries.
$ ldd solc-linux-amd64-v0.7.6+commit.7338295f
linux-vdso.so.1 (0x00007fffa6065000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f16cf6ba000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f16cf5d1000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f16ce600000)
/lib64/ld-linux-x86-64.so.2 (0x00007f16cf6c8000)
$ file solc-linux-amd64-v0.7.6+commit.7338295f
solc-linux-amd64-v0.7.6+commit.7338295f: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=2636f404338a79ce71e1aad876a0c81db2a79ec0, stripped
Compare this to the output for solc-linux-amd64-v0.8.29+commit.ab55807c
:
$ ldd solc-linux-amd64-v0.8.29+commit.ab55807c
not a dynamic executable
$ file solc-linux-amd64-v0.8.29+commit.ab55807c
solc-linux-amd64-v0.8.29+commit.ab55807c: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=c7faab9d676a0e196435eed8cfbe44bd0c2cd0b1, for GNU/Linux 3.2.0, stripped