无法分配内存

当编译源码时遇到virtualmemoryexhausted错误,通常是由于系统虚拟内存不足导致的。解决方法包括检查当前内存大小,创建swap文件并启用它。创建swap文件的步骤包括使用dd命令生成文件,然后用mkswap进行格式化,最后通过swapon启动swap。这能为系统提供额外的内存资源以完成编译任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译出现virtual memory exhausted:无法分配内存的解决

问题产生

  • 今天打算尝试一下编译源码,结果在编译的过程出现了如下错误:
    编译出现的问题

问题解决

  • 问题出在虚拟内存不足上面
1. 查看当前内存大小

在这里插入图片描述

2. 创建swap文件1
dd if=/dev/zero of=/var/swap bs=1024 count=1024000
  • 解析说明
    参数说明
    ifinput file
    ofoutput file
    bs以bytes写入

分配swap

3. 建立swap

在这里插入图片描述
1. 语法
mkswap [-c] [-f] [-p PSZ] [-L label] [-U uuid] device [size]
参数device通常是一个磁盘分区(类似于/dev/sdb7),但也可以是一个文件。Linux内核不查看分区ID,但是许多安装脚本将假定十六进制类型82(Linux_SWAP)的分区是交换分区。(警告:Solaris也使用此类型。小心不要关闭Solaris分区。)

2. 选项列表

| 选项   | 说明 |
| :--------| :--- |
| -c           | 创建交换分区之前,检测坏块。如果有,那么打印出数量。 |
| -f           | 强制执行。如果没有此选项,mkswap将拒绝擦除带有分区表的设备上的第一个块或整个磁盘上的第一个块(例如/dec/sda) |
| -p           | 设置页大小,默认4096。一般是不需要指定这个参数的 |
| -L label | 指定一个label,方便swapon使用。只适用于新的风格交换区域 |
| -v1          |创建v1版本的swap分区,2.5内核之后只支持这种的 |
| -U uuid   |  指定uuid,默认情况会生成uuid |
5. 启动swap
         swapon /var/swap

在这里插入图片描述#### 6. 在这里插入图片描述


  1. 注意: of=<swapfile>,将<swapfile>替换成你想创建swap文件的位置,最后一项是swap文件的名字。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值