¿Cuál es la forma correcta de construir y llamar a una versión específica de solidez?

Recibo el siguiente error de solc:

Error: Source file requires different compiler version (current compiler is 0.4.11-develop.2017.6.22+commit.68ef5810.Darwin.appleclang - note that nightly builds are considered to be strictly less than the released version
pragma solidity 0.4.11;
^---------------------^

Para construir solc, yo:

  1. clonado el repositorio de solidez,
  2. corrió git checkout v0.4.11que obtuvo con éxito el archivo tag/v0.4.11. 3. completó el proceso de construcción
  3. me aseguré de que solcestaba en mi camino

    solc --version
    solc, the solidity compiler commandline interface
    Version: 0.4.11-develop.2017.6.22+commit.68ef5810.Darwin.appleclang
    

Entonces, esa es la versión v0.4.11, pero el número de versión tiene la fecha de hoy. ¿Es esa la fuente del error?

El sistema es macOS Sierra 10.12.5.

Respuestas (2)

Resolví mi problema por RTFM. Los usuarios de Mac deben instalar usando Homebrew.

Desde Instalando Solidity

brew update 
brew upgrade
brew tap ethereum/ethereum
brew install solidity
brew linkapps solidity

Si necesita una versión específica de Solidity, puede instalar una fórmula Homebrew directamente desde Github.

para ubuntu: sudo npm install -g solc
Probablemente puedas aceptar tu propia respuesta entonces :)

Para instalar una versión específica de Solidity, use:

npm install -g solc@0.4

Esto instalará el compilador de solidity 0.4.26 (más reciente en esa versión), globalmente.

o

npm install -g solc@0.5

Después

$ solcjs --version
> 0.4.26+commit.4563c3fc.Emscripten.clang
Esto probablemente sea útil para algunas personas, pero vale la pena señalar que esto instala solcjs, no solc. Este último tiene bastantes características interesantes en la línea de comandos que faltan en solc-js.
@maurelian, como sé, solcjstambién descargue la solcversión exacta: github.com/ethereum/solc-js/blob/master/wrapper.js#L331 . Entonces puede ser útil