Karp 的技术博客

编译php7.4的版本的make && make install这一步出现错误,提示:

virtual memory exhausted: Cannot allocate memory
Makefile:197: recipe for target 'libmagic/apprentice.lo' failed

下面是make 编译后的详细信息:

liasing -DZEND_SIGNALS   -c /usr/local/src/php-7.4.16/ext/fileinfo/libmagic/apprentice.c -o ext/fileinfo/libmagic/apprentice.lo 
virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1

原因

==这个意思是内存不足,无法完成编译。==

本次使用的是Aliyun ecs.t5-lc1m1.small 实例,实际上其内存有1GB,但是还是出现本次的错误,应该是同时运行的其他程序导致内存不足。

解决办法

既然这样,物理内存不足我们没办法,但是可以通过自行增加虚拟内存的方法来解决。

创建swap 分区
通过free -m来查看下内存使用状况

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            990         271         616           0         102         597
Swap:             0           0           0

创建一个2GB大小的文件

$ mkdir -p /opt/images
$ dd if=/dev/zero of=/opt/images/swap bs=1024 count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 18.6413 s, 113 MB/s

把创建的文件变成SWAP分区

$ mkswap /opt/images/swap
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=56051496-4f81-47f0-85bf-e4d850714726

启用这个SWAP文件

$ swapon /opt/images/swap
swapon: /opt/images/swap: insecure permissions 0644, 0600 suggested.
$ free -m
              total        used        free      shared  buff/cache   available
Mem:            990         274          62           0         653         572
Swap:          1999           0        1999

php

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2021年04月26日 20:58
6

目录

来自 《编译安装PHP组件出现错误提示内存不足:virtual memory exhausted Cannot allocate memory》