V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhq527725
V2EX  ›  Apple

求在 MBP 上的 Linux 虚拟机中编译 C++项目的最佳方式

  •  
  •   zhq527725 · Jul 11, 2017 · 2702 views
    This topic created in 3216 days ago, the information mentioned may be changed or developed.

    我有一个规模不是很大的 C++项目(使用 automake 进行编译),同时支持 macOS 和 Linux,在我的 MBP 上编译一遍大约耗时十分钟。我在 MBP 上通过 VirtualBox 创建一个 Ubuntu 16.04 的虚拟机( 4core + 8GB RAM ),然后在这个虚拟机中编译这个项目需要四十分钟左右,实在是太慢了。。。

    不太清楚问题出在哪儿,是 VirtualBox 的锅吗?有什么办法加速虚拟机中的编译?

    10 replies    2017-07-11 19:32:40 +08:00
    whatot
        1
    whatot  
       Jul 11, 2017
    上 cmake,ninja,ccache 等
    porrat
        2
    porrat  
       Jul 11, 2017
    不废话吗,虚拟机性能当然大幅下降,没办法
    lsmgeb89
        3
    lsmgeb89  
       Jul 11, 2017
    ccache 会快一点
    Gcourage
        4
    Gcourage  
       Jul 11, 2017 via Android
    @lsmgeb89 原来就是增量编译,是不是就差不多了?
    QAPTEAWH
        5
    QAPTEAWH  
       Jul 11, 2017
    CPU 性能,Host 和 VM 应该差距不大。可能性有
    - VM 设置没弄好?
    - VirtualBox 是比较挫?
    - 编译实际是 IO-bond 的?
    - LLVM 和 GCC 的差异?
    zhq527725
        6
    zhq527725  
    OP
       Jul 11, 2017
    @QAPTEAWH 我感觉可能跟 IO 有些关系,因为最终编译完成后生成的目标文件和可执行文件加起来 5 个 G 左右。
    UnknownR
        7
    UnknownR  
       Jul 11, 2017
    @zhq527725 虚拟机的主要开销在 cpu 和内存上,mbp 上是 ssd,磁盘 io 应该不会造成瓶颈。可以对比下 macos 下和 ubuntu 下的编译环境,虚拟机还不至于带来 4 倍的时间开销,或者看下 cmake 的配置,是否是因为没启用多线程造成的
    zhq527725
        8
    zhq527725  
    OP
       Jul 11, 2017
    @UnknownR 我暂时还没有使用 cmake,目前使用的是 automake,编译时的命令是“ make -j4 ”,应该是使用到了多核并行进行编译。
    akrf
        9
    akrf  
       Jul 11, 2017 via Android
    最佳方式是搞一台台式机
    hu6360567
        10
    hu6360567  
       Jul 11, 2017 via iPhone
    https://github.com/tpoechtrager/osxcross
    在 Mac 上交叉编译到 Linux 呢?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2418 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 11:06 · PVG 19:06 · LAX 04:06 · JFK 07:06
    ♥ Do have faith in what you're doing.