Установка geth на Raspberry Pi 3 - не удается выделить ошибку памяти

Я использовал этот скрипт , чтобы попытаться установить geth на Raspberry Pi 3 .

Кажется, он работает нормально до тех пор, пока не пройдет часть сборки:

pi@raspberrypi:~/go-ethereum $ make geth
build/env.sh go run build/ci.go install ./cmd/geth
>>> /usr/lib/go-1.7/bin/go install -ldflags -X main.gitCommit=bdef758d5c6d397584d0c35e53d6f6c318e61351 -v ./cmd/geth
github.com/ethereum/go-ethereum/cmd/geth
# github.com/ethereum/go-ethereum/cmd/geth
/usr/lib/go-1.7/pkg/tool/linux_arm/link: running gcc failed: fork/exec /usr/bin/gcc: cannot allocate memory

util.go:43: exit status 2
exit status 1
Makefile:15: recipe for target 'geth' failed
make: *** [geth] Error 1

Пишет cannot allocate memory- на SD-карте свободно ~8 ГБ (1 ГБ ОЗУ).

Кто-нибудь может воссоздать эту ошибку? Какие советы по отладке/исправлению?

Nb Этот вопрос аналогичен установке узла ethereum на ошибки Raspberry pi .

Также здесь сообщалось о подобной проблеме: https://groups.google.com/forum/#!topic/cloud-print-connector/zF_xyViClLM .

Сколько памяти (т.е. ОЗУ) доступно перед сборкой? (Выполнить free -h.) Есть ли какие-нибудь потребляющие память процессы, которые вы могли бы убить в первую очередь? (Запустите top, затем нажмите, Mчтобы упорядочить по памяти.)
@RichardHorrocks, спасибо; У меня было только 236M бесплатно ...... спасибо!
Спасибо - я добавил еще несколько деталей на случай, если они будут полезны кому-то еще :-)

Ответы (2)

Какие советы по отладке/исправлению?

Эти предложения не относятся к Ethereum/Geth/и т. д., но они могут быть полезны тем, кто столкнется с той же проблемой в будущем.

Ошибка жаловалась на нехватку памяти. (Где «память» означает ОЗУ, а не место на жестком диске.)

/usr/lib/go-1.7/pkg/tool/linux_arm/link: running gcc failed: fork/exec 
/usr/bin/gcc: cannot allocate memory

Даже если вы знаете, сколько памяти у вашей системы, сначала проверьте, сколько ее на самом деле доступно:

  • free -h, или
  • cat /proc/meminfo | grep MemFree

Если есть то, что вы считаете недостаточным, посмотрите, можете ли вы освободить что-то, оценив, какие процессы его используют:

  • top, затем Mупорядочить по использованию памяти.

После того, как вы выбрали все некритические процессы, которые вам не нужны, убейте их:

  • kill -15 <pid>, где pidидентификатор процесса.

(Обратите внимание, что мы используем номер сигнала -15, который равен SIGTERM, а не -9, который равен SIGKILL. Таким образом, мы даем процессу возможность получить уведомление о сигнале — если у него установлен обработчик — и изящно очистить его.)

FWIW Я нашел этот ответ: https://raspberrypi.stackexchange.com/questions/70/how-to-set-up-swap-space и смог скомпилировать и запустить geth на Rasp B с оперативной памятью 512 МБ.