我有一个规模不是很大的 C++项目(使用 automake 进行编译),同时支持 macOS 和 Linux,在我的 MBP 上编译一遍大约耗时十分钟。我在 MBP 上通过 VirtualBox 创建一个 Ubuntu 16.04 的虚拟机( 4core + 8GB RAM ),然后在这个虚拟机中编译这个项目需要四十分钟左右,实在是太慢了。。。
不太清楚问题出在哪儿,是 VirtualBox 的锅吗?有什么办法加速虚拟机中的编译?
1
whatot 2017-07-11 11:18:00 +08:00
上 cmake,ninja,ccache 等
|
2
porrat 2017-07-11 11:32:58 +08:00
不废话吗,虚拟机性能当然大幅下降,没办法
|
3
lsmgeb89 2017-07-11 12:38:35 +08:00
ccache 会快一点
|
5
QAPTEAWH 2017-07-11 13:17:54 +08:00
CPU 性能,Host 和 VM 应该差距不大。可能性有
- VM 设置没弄好? - VirtualBox 是比较挫? - 编译实际是 IO-bond 的? - LLVM 和 GCC 的差异? |
6
zhq527725 OP @QAPTEAWH 我感觉可能跟 IO 有些关系,因为最终编译完成后生成的目标文件和可执行文件加起来 5 个 G 左右。
|
7
UnknownR 2017-07-11 13:51:20 +08:00
@zhq527725 虚拟机的主要开销在 cpu 和内存上,mbp 上是 ssd,磁盘 io 应该不会造成瓶颈。可以对比下 macos 下和 ubuntu 下的编译环境,虚拟机还不至于带来 4 倍的时间开销,或者看下 cmake 的配置,是否是因为没启用多线程造成的
|
8
zhq527725 OP @UnknownR 我暂时还没有使用 cmake,目前使用的是 automake,编译时的命令是“ make -j4 ”,应该是使用到了多核并行进行编译。
|
9
akrf 2017-07-11 14:02:49 +08:00 via Android
最佳方式是搞一台台式机
|
10
hu6360567 2017-07-11 19:32:40 +08:00 via iPhone
https://github.com/tpoechtrager/osxcross
在 Mac 上交叉编译到 Linux 呢? |