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
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
, odercat /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 M
nach Speichernutzung bestellen.Sobald Sie alle nicht kritischen Prozesse ausgewählt haben, die Sie nicht benötigen, beenden Sie sie:
kill -15 <pid>
, wo pid
ist 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
Richard Horrocks
free -h
.) Gibt es speicherintensive Prozesse, die Sie zuerst beenden könnten? (Führen Sietop
aus und drücken Sie dannM
, um nach Speichernutzung zu sortieren.)Lee
Richard Horrocks
Lee