Go-Ethereum
在 Raspberry Pi 3 上安裝 geth - 無法分配記憶體錯誤
我一直在使用這個腳本來嘗試在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
。這樣,我們讓程序有機會收到信號通知 - 如果它安裝了處理程序 - 並優雅地清理。)