Go-Ethereum

在 Raspberry Pi 3 上安裝 geth - 無法分配記憶體錯誤

  • December 21, 2017

我一直在使用這個腳本來嘗試在Raspberry Pi 3上安裝 geth 。

在建構完成之前,它似乎可以正常工作:

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 卡(1GB RAM)上有大約 8GiB 的空閒空間。

任何人都可以重新創建此錯誤嗎?有哪些調試/修復技巧?

注意這個問題類似於在樹莓派上安裝乙太坊節點錯誤

此外,這里報告了一個類似的問題:https ://groups.google.com/forum/#!topic/cloud-print-connector/zF_xyViClLM

有哪些調試/修復技巧?

這些建議並非特定於 Ethereum/Geth/etc.,但它們可能對將來遇到相同問題的人有用。

錯誤是抱怨記憶體不足。(其中“記憶體”是指 RAM,而不是硬碟空間。)

/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程序ID在哪裡。

(請注意,我們使用的信號編號-15等於SIGTERM,而不是-9,即SIGKILL。這樣,我們讓程序有機會收到信號通知 - 如果它安裝了處理程序 - 並優雅地清理。)

引用自:https://ethereum.stackexchange.com/questions/12222