{"id":8661,"library":"solc-select","title":"solc-select","description":"solc-select is a Python library and CLI tool (version 1.2.0) that simplifies the management and switching between different versions of the Solidity compiler (`solc`). It provides two command-line utilities: `solc-select` for installing and setting compiler versions, and `solc` as a wrapper that invokes the selected compiler. It maintains an active development status with a steady release cadence, primarily focusing on CLI improvements and platform compatibility.","status":"active","version":"1.2.0","language":"en","source_language":"en","source_url":"https://github.com/crytic/solc-select.git","tags":["solidity","compiler","blockchain","ethereum","version-management","cli"],"install":[{"cmd":"pip install solc-select","lang":"bash","label":"Install latest stable version"}],"dependencies":[{"reason":"Required runtime environment.","package":"Python","optional":false}],"imports":[],"quickstart":{"code":"# Install a specific Solidity version\nsolc-select install 0.8.19\n\n# Set the global Solidity version\nsolc-select use 0.8.19\n\n# Verify the active version\nsolc --version\n\n# List all installed versions\nsolc-select versions\n\n# Install and use in one command (will download if not installed)\nsolc-select use 0.8.20 --always-install","lang":"bash","description":"The quickstart demonstrates installing, switching, and verifying Solidity compiler versions using the `solc-select` command-line utility."},"warnings":[{"fix":"Uninstall other `solc` installations on your machine and rely solely on `solc-select` for managing Solidity compiler binaries.","message":"If `solc --version` does not reflect the version set by `solc-select use <version>`, it often indicates a conflicting `solc` installation (e.g., via Homebrew or apt). `solc-select` manages its own binaries.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Install Rosetta 2 using `/usr/sbin/softwareupdate --install-rosetta --agree-to-license` or upgrade to a `solc` version 0.8.5 or newer.","message":"On macOS ARM (M1/M2/M3 Macs), `solc-select` provides native ARM64 support for versions 0.8.5-0.8.23 and universal binary support for 0.8.24+. Older versions (<0.8.5) are Intel-only and require Rosetta 2 to be installed.","severity":"breaking","affected_versions":"<0.8.5"},{"fix":"Run the `Install Certificates.command` located in your Python installation directory (e.g., `/Applications/Python 3.8/Install Certificates.command`) or `pip3 install certifi`.","message":"Running `solc-select` commands, especially `install`, might encounter `SSL: CERTIFICATE_VERIFY_FAILED` errors on OS X (macOS) due to changes in Python 3.6+ regarding SSL certificate validation.","severity":"gotcha","affected_versions":"All versions on macOS with Python 3.6+"},{"fix":"Ensure you are using the latest `solc-select` version. For `solc` versions older than 0.8.31 on Linux ARM, QEMU (`qemu-x86_64`) and potentially specific libc binaries/environment variables are required.","message":"On Linux ARM64 (aarch64) systems (e.g., Docker on Apple Silicon, AWS Graviton), older versions of `solc-select` might incorrectly download x86_64 binaries, leading to 'cannot execute binary file: Exec format error'. Native ARM64 support for Linux begins with `solc` 0.8.31+.","severity":"gotcha","affected_versions":"<1.2.0 (especially for solc <0.8.31)"},{"fix":"First, install the desired Solidity version using `solc-select install <version>`, or use the `--always-install` flag with `solc-select use <version>`.","message":"`solc-select use <version>` will raise an `ArgumentTypeError` if the specified Solidity version has not been previously installed using `solc-select install <version>`.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-16T00:00:00.000Z","next_check":"2026-07-15T00:00:00.000Z","problems":[{"fix":"Uninstall any other `solc` installations. `solc-select` works by wrapping its own installed `solc` binaries.","cause":"Multiple `solc` installations on the system (e.g., via Homebrew, apt) conflict with `solc-select`'s managed binaries.","error":"solc-select version changes, but solc --version does not match."},{"fix":"Run `/Applications/Python <version>/Install Certificates.command` or `pip3 install certifi` to update certificate authorities.","cause":"Python distributions on macOS (OS X) often lack certificates for validating SSL connections, a common issue since Python 3.6.","error":"SSL: CERTIFICATE_VERIFY_FAILED on running solc-select commands"},{"fix":"Install Rosetta 2 using `/usr/sbin/softwareupdate --install-rosetta --agree-to-license`, or install and use a `solc` version 0.8.5 or newer which has native ARM64 support.","cause":"Attempting to use an Intel-only Solidity binary (versions older than 0.8.5) on an ARM-based macOS system without Rosetta 2 installed.","error":"OSError: [Errno 86] Bad CPU type in executable (on macOS ARM/M1/M2)"},{"fix":"First install the version: `solc-select install 0.8.9`. Alternatively, use `solc-select use 0.8.9 --always-install` to install it if not present.","cause":"The `solc-select use` command was executed for a Solidity version that has not yet been installed.","error":"argparse.ArgumentTypeError: '0.8.9' must be installed prior to use."},{"fix":"Upgrade `solc-select` to its latest version. For `solc` versions less than 0.8.31, ensure QEMU (`qemu-x86_64`) and necessary `libc` binaries are installed and configured for x86_64 emulation.","cause":"On Linux ARM64 systems (e.g., Docker on Apple Silicon, AWS Graviton), older `solc-select` versions (especially for `solc` versions before 0.8.31) might mistakenly download and attempt to run x86_64 binaries.","error":"cannot execute binary file: Exec format error (on Linux ARM64)"}]}