Я не могу установить solc в Mac OS X. Я пробовал следующее:
npm install solc
/Users/punddalinni
└── solc@0.3.0-1
npm WARN enoent ENOENT: no such file or directory, open '/Users/punddalinni/package.json'
npm WARN punddalinni No description
npm WARN punddalinni No repository field.
npm WARN punddalinni No README data
npm WARN punddalinni No license field.
Когда я вернусь к Гету и побегу
> eth.getCompilers()
[""]
Когда я попытался установить Solc, произошло следующее.
> admin.setSolc('/Users/punddalinni/node_modules/solc')
exec: "/Users/punddalinni/node_modules/solc": permission denied
at InvalidResponse (<anonymous>:-81662:-57)
at send (<anonymous>:-156322:-57)
at setSolc (<anonymous>:-133322:-57)
at <anonymous>:1:1
Я пытался следовать указаниям здесь, но он застрял на
brew install llvm --HEAD --with-clang
РЕДАКТИРОВАТЬ: включая содержимое package.json из solc на Mac.
{
"_args": [
[
"solc",
"/Users/punddalinni"
]
],
"_from": "solc@latest",
"_id": "solc@0.3.0-1",
"_inCache": true,
"_installable": true,
"_location": "/solc",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "packages-13-west.internal.npmjs.com",
"tmp": "tmp/solc-0.3.0-1.tgz_1457892692634_0.5487515390850604"
},
"_npmUser": {
"email": "d11e9@turkd.net",
"name": "d11e9"
},
"_npmVersion": "3.3.2",
"_phantomChildren": {},
"_requested": {
"name": "solc",
"raw": "solc",
"rawSpec": "",
"scope": null,
"spec": "latest",
"type": "tag"
},
"_requiredBy": [
"#USER"
],
"_resolved": "https://registry.npmjs.org/solc/-/solc-0.3.0-1.tgz",
"_shasum": "523e79db0c69070f91fcbf408e8c7d0c93be176c",
"_shrinkwrap": null,
"_spec": "solc",
"_where": "/Users/punddalinni",
"author": {
"name": "chriseth"
},
"bugs": {
"url": "https://github.com/chriseth/browser-solidity/issues"
},
"dependencies": {},
"description": "Solidity compiler",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "523e79db0c69070f91fcbf408e8c7d0c93be176c",
"tarball": "http://registry.npmjs.org/solc/-/solc-0.3.0-1.tgz"
},
"gitHead": "5ce686c8d33db78c8f1eb8e2318eefbc5151f0eb",
"homepage": "https://github.com/chriseth/browser-solidity#readme",
"keywords": [
"compiler",
"ethereum",
"solidity"
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "chriseth",
"email": "c@ethdev.com"
},
{
"name": "d11e9",
"email": "d11e9@turkd.net"
}
],
"name": "solc",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chriseth/browser-solidity.git"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "0.3.0-1"
}
Любые идеи?
Я не был знаком с NPM, поэтому у меня были похожие проблемы. При простом запуске npm install solc
будет предпринята попытка установить локально, что может вызвать некоторые проблемы с разрешениями и связыванием — это, вероятно, причина проблемы.
Вместо этого установите solC глобально с помощью $ npm install -g solc
(вы также можете попробовать $ npm install solc --global
, поскольку я не уверен, какая из этих двух команд устранила мою проблему).
Если это установлено, проверьте, где оно было установлено, запустив, $ which solcjs
что должно дать что-то вроде/usr/local/bin/solcjs
Я обнаружил, что мне нужно также использовать Homebrew для установки/сборки solC, следуя инструкциям по установке. После того, как Brew был готов, я проверил, установлен ли solC с расширением $ which sol
.
Скопируйте этот каталог, а затем, как только вы его запустите, geth console
используйте его в команде setSolc, например> admin.setSolc("/usr/local/bin/solc")
Если повезет, вы получите подтверждающее сообщение, и при следующем запуске > eth.getCompilers()
результат должен быть примерно таким["Solidity"]
Ах ... вы используете это неправильно. Учебники Web3 не отражают этого, но есть разница между тем, как вы настраиваете Solidity для компиляции в web3 с компилятором, созданным из исходного кода (что предполагает web3), и пакетом npm (который не вращается в учебниках) . Чтобы все скомпилировалось, вам нужно следовать инструкциям на странице Browser-solidity:
https://github.com/chriseth/browser-солидность
Выдержка:
var solc = require('solc');
var input = "contract x { function g() {} }";
var output = solc.compile(input, 1); // 1 activates the optimiser
for (var contractName in output.contracts) {
// code and ABI that are needed by web3
console.log(contractName + ': ' + output.contracts[contractName].bytecode);
console.log(contractName + '; ' + JSON.parse( output.contracts[contractName].interface));
}
пундалинни
> var solc = require('solc'); Cannot find module 'solc' at a (<anonymous>:-160:-28) at require (<anonymous>:-122:-28) at <anonymous>:1:12
. Кроме того, это проблема OS X? Поскольку я также использую тестовую цепочку Ubuntu, и для компиляции там контрактов я просто выполняю обычные шаги, как описано здесь (настройкаsource = minifiedContract
и т.VoR0220
пундалинни
VoR0220
пундалинни
VoR0220