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

2017-07-11 11:02:41 +08:00
 zhq527725

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

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

2217 次点击
所在节点    Apple
10 条回复
whatot
2017-07-11 11:18:00 +08:00
上 cmake,ninja,ccache 等
porrat
2017-07-11 11:32:58 +08:00
不废话吗,虚拟机性能当然大幅下降,没办法
lsmgeb89
2017-07-11 12:38:35 +08:00
ccache 会快一点
Gcourage
2017-07-11 13:05:56 +08:00
@lsmgeb89 原来就是增量编译,是不是就差不多了?
QAPTEAWH
2017-07-11 13:17:54 +08:00
CPU 性能,Host 和 VM 应该差距不大。可能性有
- VM 设置没弄好?
- VirtualBox 是比较挫?
- 编译实际是 IO-bond 的?
- LLVM 和 GCC 的差异?
zhq527725
2017-07-11 13:27:47 +08:00
@QAPTEAWH 我感觉可能跟 IO 有些关系,因为最终编译完成后生成的目标文件和可执行文件加起来 5 个 G 左右。
UnknownR
2017-07-11 13:51:20 +08:00
@zhq527725 虚拟机的主要开销在 cpu 和内存上,mbp 上是 ssd,磁盘 io 应该不会造成瓶颈。可以对比下 macos 下和 ubuntu 下的编译环境,虚拟机还不至于带来 4 倍的时间开销,或者看下 cmake 的配置,是否是因为没启用多线程造成的
zhq527725
2017-07-11 13:56:44 +08:00
@UnknownR 我暂时还没有使用 cmake,目前使用的是 automake,编译时的命令是“ make -j4 ”,应该是使用到了多核并行进行编译。
akrf
2017-07-11 14:02:49 +08:00
最佳方式是搞一台台式机
hu6360567
2017-07-11 19:32:40 +08:00
https://github.com/tpoechtrager/osxcross
在 Mac 上交叉编译到 Linux 呢?

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

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

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

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

© 2021 V2EX