mip*_*pnw 0 makefile gnu-make docker
无论--jobs我要提出什么论点,我总是得到 4 个线程。
在make --jobs=1 target我可以这样开始的标准输出线看make[1]:,make[2]:,make[3]:而make[4]:当我只会想到一个单独的线程。
如果我使用make --jobs=100 target,结果相同,我得到 4 个线程而不是 100 个。
我不确定这是否相关,但我在 docker 容器中运行 make 并且 docker 有 7 个可用的本地主机内核。
>docker info
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 7
Run Code Online (Sandbox Code Playgroud)
在 Alpine Linux docker 容器内
>make --version
GNU Make 4.2.1
Built for x86_64-alpine-linux-musl
>grep -c ^processor /proc/cpuinfo
7
Run Code Online (Sandbox Code Playgroud)
确认容器获得 7 个内核。
有什么我可以运行的东西可以帮助我缩小为什么 make 会这样?
我认为有些混乱:后面的数字make不是线程号。Make实际上不是多线程的,它是单线程的。
这个数字是被调用的递归 make 进程的深度。无论您的-j值有多大(或多小),它都会始终显示完全相同(给定相同的目标),因为它表示调用了多少次 make 递归实例。
也就是说,如果你有类似的东西:
recurse:
$(MAKE) ...
Run Code Online (Sandbox Code Playgroud)
那么来自顶级 make 实例的make消息将是,来自recurse配方调用的子 make 的消息将是make[1],等等。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |