go 编译出现gcc internal compiler error: Killed

环境

  • 阿里云1核512M CentOS 7

现象

  • 编译包含gopkg.in/mgo.v2库时出现了gcc internal compiler error: Killed报错

原因

  • 这是内存不足,且没有交换区,go中用到gcc编译过程中内存耗尽, 导致了编译中断。

解决办法

一、硬件解决

提升配置,增加内存。

二、释放内存

结束没用的进程,释放cache缓存

#!/bin/bash
echo  "Clean  Cache Begin..."

#写入硬盘,防止数据丢失
sync;sync;sync

#延迟10秒,等待磁盘写入
sleep 10

# 开始清理
echo 1 > /proc/sys/vm/drop_caches

echo "Clean Finish !"

三、设置虚拟内存

1. 创建分区文件

dd if=/dev/zero of=/swapfile bs=1k count=2048000 #2G

2. 生成swap文件系统

mkswap /swapfile

3. 激活 swap 文件

swapon /swapfile

4. 修改配置

编辑/etc/fstab文件,在后面添加以下内容。不然系统重启后swap文件不会被激活

/swapfile  swap  swap    defaults 0 0
0%