Makefile:' -j'之间有什么区别?选项和' -l'选项?

时间:2015-08-07 07:53:45

标签: makefile gnu-make

我正在阅读GNU make手册,我有一个问题..

关于并行执行,我不会得到-j选项和-l选项之间的差异。

据我了解,他们在限制工作人数方面具有相同的作用。 但是手册告诉我两种选择是不同的。

请回答。谢谢!

2 个答案:

答案 0 :(得分:2)

如上所述,man make非常明确,如果您知道load-average的含义,例如在superuser question中进行了总结。要解释文档,

  • -j N会让make尝试并行启动N个命令,无论系统上运行的是什么。
  • -l N只有当make(即在过去几分钟内尝试获取一些CPU时间的进程的平均数量)小于load-average时,才会让N尝试启动新命令require 'googleauth' require 'google/apis/drive_v2' Drive = Google::Apis::DriveV2 upload_source = "/User/my_user_name/hacking.txt" drive = Drive::DriveService.new # Drive::AUTH_DRIVE is equal to https://www.googleapis.com/auth/drive drive.authorization = Google::Auth.get_application_default([Drive::AUTH_DRIVE]) file = drive.insert_file({title: 'hacking.txt'}, upload_source: upload_source) 。因此,它对于与编译并行运行的其他任务更加友好。

答案 1 :(得分:0)

默认情况下启用1个作业。如果要使用所有CPU /核心,请使用-j X. 如果您担心机器过载,请添加-l Y