Not*_*aeL 5 memory linux vlc-media-player compile arm
我正在尝试使用此处提供的说明在我的 Allwinner 设备(带有 armhf 内核的 ARM Cortex-A8 NEON 和大约 380 MB 的 RAM)上从此GitHub 存储库编译 VLC 。
我不断收到段错误,所以我创建了一个这样的交换分区:
root@lianro:~/# dd if=/dev/zero of=/swap bs=1M count=1024
root@linaro:~/# mkswap -c /swap
root@linaro:~/# swapon /swap
Run Code Online (Sandbox Code Playgroud)
它变得更好了;而不是在大约一分钟后随机中断,而是在很长时间后随机中断,上次它几乎完成,但我在最后一个模块中遇到了段错误。
在编译过程中的任何时候似乎都没有使用 Swap。我有足够的可用磁盘空间。
可能是什么问题?
如果编译特定模块需要的 RAM 多于实际可用的 RAM,则交换将无济于事,因为程序将尝试分配和使用比系统中拥有的更多的 RAM,而交换无法弥补这一点。Linux 无法交换正在使用的内存。
您可以尝试手动更改崩溃的特定模块的 CFLAGS 或 Makefile 编译规则,以不执行优化 ( -O0
) 或使用较低级别的优化(-O1
或-Os
例如)。这将在编译过程中使用显着更少的内存,虽然并不理想,但它可能会让编译成功。媒体播放器倾向于使用昂贵的优化,在编译时和运行时都需要大量 RAM。