V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
sen506
V2EX  ›  问与答

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

  •  
  •   sen506 · 2015-11-13 15:49:54 +08:00 · 2500 次点击
    这是一个创建于 3301 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这边在编译 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

    `

    16 条回复    2015-11-13 21:36:20 +08:00
    zzn
        1
    zzn  
       2015-11-13 16:31:57 +08:00
    交叉编译
    sen506
        2
    sen506  
    OP
       2015-11-13 16:58:02 +08:00
    @zzn 除了这种呢?有没有其他的?
    zzn
        3
    zzn  
       2015-11-13 17:40:49 +08:00
    @sen506 下别人编译好的二进制包
    话说你哪里看出是内存不足?
    kiritoalex
        4
    kiritoalex  
       2015-11-13 17:42:07 +08:00 via Android
    交叉编译应该可以,分布式编译不行
    sen506
        5
    sen506  
    OP
       2015-11-13 18:00:37 +08:00
    @zzn 这边开着 top 。。跑到这个地方的时候内存占用到 50+%, 空闲内存也几乎用光了。。然后进程持续了一段时间后就挂了。。
    zzn
        6
    zzn  
       2015-11-13 18:10:20 +08:00
    @sen506 dmesg | grep -i killed
    sen506
        7
    sen506  
    OP
       2015-11-13 18:29:03 +08:00
    @zzn 没有任何输出。。。
    aalska
        8
    aalska  
       2015-11-13 18:38:16 +08:00
    function not implemented,你是什么机器
    一般 swp 需要内核支持
    sen506
        9
    sen506  
    OP
       2015-11-13 18:43:22 +08:00
    @aalska 安卓 4.0 。。。
    sen506
        10
    sen506  
    OP
       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
        11
    aalska  
       2015-11-13 18:47:04 +08:00
    @sen506 我是说机器

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

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

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

    @aalska
    @zzn
    @adadada
    谢啦。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 20:48 · PVG 04:48 · LAX 12:48 · JFK 15:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.