在低内存系统上编译 VLC 时出现段错误

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。我有足够的可用磁盘空间。

可能是什么问题?

Jod*_*hon 1

如果编译特定模块需要的 RAM 多于实际可用的 RAM,则交换将无济于事,因为程序将尝试分配和使用比系统中拥有的更多的 RAM,而交换无法弥补这一点。Linux 无法交换正在使用的内存。

您可以尝试手动更改崩溃的特定模块的 CFLAGS 或 Makefile 编译规则,以不执行优化 ( -O0) 或使用较低级别的优化(-O1-Os例如)。这将在编译过程中使用显着更少的内存,虽然并不理想,但它可能会让编译成功。媒体播放器倾向于使用昂贵的优化,在编译时和运行时都需要大量 RAM。