make -j 参数简介

  • make -j

在Linux编译程序的时候,IO往往不是瓶颈,那CPU就应该是一个影响编译速度的重要因素了。

用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。

还是用Kernel来测试:

用make: 40分16秒

用make -j4:23分16秒

用make -j8:22分59秒

由此看来,在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。

不过这个方案不是完全没有cost的,如果项目的Makefile不规范,没有正确的设置好依赖关系,并行编译的结果就是编译不能正常进行。如果依赖关系设置过于保守,则可能本身编译的可并行度就下降了,也不能取得最佳的效果。

 

### 使用 `make -j8` 和 `make altinstall` 进行软件编译与安装 #### 关于 `make -j8` 命令 `make -j8` 是 GNU Make 工具的一个选项,用于并行执行多个编译任务。参数 `-j8` 表示允许最多同时运行 8 个作业线程来加速构建过程[^1]。这通常适用于多核处理器的计算机,可以显著减少大型项目的编译时间。 以下是使用该命令的一般方法: ```bash make -j$(nproc) ``` 上述代码动态获取当前系统的 CPU 核心数,并设置相应的并发数量。如果已知目标机器有固定的核心数(如 8),可以直接指定为 `make -j8`。 #### 关于 `make altinstall` `make altinstall` 的作用是在不覆盖现有程序的情况下完成安装操作。它主要用于避免与其他版本冲突的情况发生。例如,在安装 Python 或 GCC 等工具链时,默认路径可能已经被占用,而通过 `altinstall` 可以将新版本放置到不同的目录下而不影响原有版本的功能[^2]。 典型的应用场景如下所示: 假设正在编译一个新的 GCC 版本,则可以通过以下方式实现安全安装: ```bash ./configure --prefix=/usr/local/gcc-9.3.0 make -j8 sudo make altinstall ``` 这里设置了自定义前缀 `/usr/local/gcc-9.3.0` 来区分不同版本之间的文件位置;接着利用高度优化的多线程模式加快整个流程速度;最后采用替代形式完成部署工作,从而保留旧版可用状态。 #### 综合应用实例 下面给出一个完整的例子展示如何结合这两个指令一起使用: ```bash tar xf gcc-9.3.0.tar.gz cd gcc-9.3.0 mkdir build && cd build ../configure --disable-multilib --enable-languages=c,c++ make -j8 sudo make altinstall ``` 此脚本片段展示了从解压源码包开始直到最终成功安装备用二进制的过程[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值