没办法使用 swap 的情况下如何编译 GCC

2015-11-13 15:49:54 +08:00
 sen506
这边在编译 GCC5.2 的时候出现了错误, 应该是内存不足, 但因为是在安卓上编译的(虚拟机), 没办法使用 swap 空间, swapon 的时候提示 function not implemented, 有没有办法可以解决这个问题呢?(目前机子上的可用内存是 400MB 左右)

===================分割线=======================
错误的地方
`
g++ -g -DIN_GCC -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -
Wall -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Woverlo
aded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strin
gs -fno-common -DHAVE_CONFIG_H -DGENERATOR_FILE -static-libstdc++ -static-libgc
c -o build/genattrtab \
build/genattrtab.o build/rtl.o build/read-rtl.o build/ggc-none.o bui
ld/vec.o build/min-insn-modes.o build/gensupport.o build/print-rtl.o build/read-
md.o build/errors.o ../../build-armv7l-unknown-linux-gnueabihf/libiberty/libiber
ty.a
build/genattrtab ../.././gcc/common.md ../.././gcc/config/arm/arm.md insn-condit
ions.md \
-Atmp-attrtab.c -Dtmp-dfatab.c -Ltmp-latencytab.c
make[3]: *** [s-attrtab] Killed
make[3]: Leaving directory `/root/source/gcc-5.2.0/host-armv7l-unknown-linux-gnu
eabihf/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/root/source/gcc-5.2.0'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/root/source/gcc-5.2.0'
make: *** [all] Error 2

`
2472 次点击
所在节点    问与答
16 条回复
zzn
2015-11-13 16:31:57 +08:00
交叉编译
sen506
2015-11-13 16:58:02 +08:00
@zzn 除了这种呢?有没有其他的?
zzn
2015-11-13 17:40:49 +08:00
@sen506 下别人编译好的二进制包
话说你哪里看出是内存不足?
kiritoalex
2015-11-13 17:42:07 +08:00
交叉编译应该可以,分布式编译不行
sen506
2015-11-13 18:00:37 +08:00
@zzn 这边开着 top 。。跑到这个地方的时候内存占用到 50+%, 空闲内存也几乎用光了。。然后进程持续了一段时间后就挂了。。
zzn
2015-11-13 18:10:20 +08:00
@sen506 dmesg | grep -i killed
sen506
2015-11-13 18:29:03 +08:00
@zzn 没有任何输出。。。
aalska
2015-11-13 18:38:16 +08:00
function not implemented,你是什么机器
一般 swp 需要内核支持
sen506
2015-11-13 18:43:22 +08:00
@aalska 安卓 4.0 。。。
sen506
2015-11-13 18:46:32 +08:00
@aalska Linux localhost 3.0.8-svn2839 #79 SMP PREEMPT Wed Aug 8 01:16:04 CST 2012 armv7l
armv7l armv7l GNU/Linux
aalska
2015-11-13 18:47:04 +08:00
@sen506 我是说机器

ROM 及原生内核一般不支持 swp 的在不更换内核下需要通过 rv 刷入对应的 Swap-enabled kernel 包
就能默认开启 swp
aalska
2015-11-13 18:48:35 +08:00
@aalska 口误

通过刷入对应的 swp 模块可以使内核挂在 swp 模块功能 然后在手机上用诸如 swapper2 等软件在储存器上创建一个 swp 交换文件
sen506
2015-11-13 19:00:34 +08:00
@aalska = =。不懂这些。。。对应的 swp 模块是指不同的机器所需要的相关模块都不同吗?
aalska
2015-11-13 19:53:29 +08:00
@sen506 是的 、 厂商底层限制

除非你刷系统 顺便换内核
adadada
2015-11-13 20:43:33 +08:00
这篇 blog 的作者遇到的情况和你的有些类似 http://doomkeeper.com/buildinggcc47
sen506
2015-11-13 21:36:20 +08:00
@adadada 试了下那个作者的方法, 不行, 最后进程还是被杀掉了, 不过, 已经不重要了, 换了 clang3.4,,, 已经可以使用 c++11 了。。

@aalska
@zzn
@adadada
谢啦。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/235969

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX