sen506
V2EX  ›  问与答

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

  •  
  •   sen506 · Nov 13, 2015 · 2943 views
    This topic created in 3893 days ago, the information mentioned may be changed or developed.

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

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

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

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

    @aalska
    @zzn
    @adadada
    谢啦。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2862 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 04:36 · PVG 12:36 · LAX 21:36 · JFK 00:36
    ♥ Do have faith in what you're doing.