Installieren von geth auf Raspberry Pi 3 - Speicherfehler kann nicht zugewiesen werden

Ich habe dieses Skript verwendet , um zu versuchen, Geth auf einem Raspberry Pi 3 zu installieren .

Es scheint bis zur Hälfte des Builds in Ordnung zu sein:

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

Es heißt cannot allocate memory- auf der SD-Karte (1 GB RAM) sind ~ 8 GiB frei.

Kann jemand diesen Fehler nachstellen? Welche Tipps gibt es zum Debuggen/Reparieren?

Hinweis: Diese Frage ähnelt den Fehlern beim Installieren des Ethereum-Knotens auf dem Raspberry Pi .

Ein ähnliches Problem wurde auch hier gemeldet: https://groups.google.com/forum/#!topic/cloud-print-connector/zF_xyViClLM

Wie viel Speicher (dh RAM) ist vor dem Bau verfügbar? (Run free -h.) Gibt es speicherintensive Prozesse, die Sie zuerst beenden könnten? (Führen Sie topaus und drücken Sie dann M, um nach Speichernutzung zu sortieren.)
@RichardHorrocks das war es danke; Ich hatte nur 236 MB frei...... danke!
Danke - ich habe ein paar weitere Details hinzugefügt, falls sie für andere nützlich sind :-)

Antworten (2)

Welche Tipps gibt es zum Debuggen/Reparieren?

Diese Vorschläge sind nicht spezifisch für Ethereum/Geth/etc., aber sie können für jemanden nützlich sein, der in Zukunft das gleiche Problem hat.

Der Fehler beschwerte sich über einen Mangel an Speicher. (Wobei „Speicher“ RAM bedeutet, nicht Festplattenspeicher.)

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

Auch wenn Sie wissen, wie viel Arbeitsspeicher Ihr System hat, prüfen Sie zunächst, wie viel davon tatsächlich zur Verfügung steht:

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

Wenn etwas Ihrer Meinung nach nicht ausreicht, prüfen Sie, ob Sie etwas freigeben können, indem Sie bewerten, welche Prozesse es verwenden:

  • top, dann Mnach Speichernutzung bestellen.

Sobald Sie alle nicht kritischen Prozesse ausgewählt haben, die Sie nicht benötigen, beenden Sie sie:

  • kill -15 <pid>, wo pidist die Prozess-ID.

(Beachten Sie, dass wir die Signalnummer verwenden -15, was SIGTERM, und nicht -9, was , ist SIGKILL. Auf diese Weise geben wir dem Prozess die Möglichkeit, über das Signal benachrichtigt zu werden – wenn ein Handler installiert ist – und ordnungsgemäß aufzuräumen.)

FWIW Ich habe diese Antwort gefunden: https://raspberrypi.stackexchange.com/questions/70/how-to-set-up-swap-space und konnte geth auf einem Rasp B mit 512 MB RAM kompilieren und ausführen