当前位置: 技术问答>linux和unix
请教高人make 的-j选项问题
来源: 互联网 发布时间:2016-12-30
本文导语: 最近在尝试make加-j选项,遇到两个问题: 1. make 告警 warning: -jN forced in submake: disabling jobserver mode. warning: jobserver unavailable: using -j1. Add `+' to parent make rule. 在网上搜了下,只有解释是make进程间通信和参数...
最近在尝试make加-j选项,遇到两个问题:
1. make 告警
warning: -jN forced in submake: disabling jobserver mode.
warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
在网上搜了下,只有解释是make进程间通信和参数传递相关问题,没有解释如何解决
2. 编译顺序混乱
比如说上层模块是a,有三个子模块b, c, d
报错是在生成a的目标文件时缺少b的目标文件,而在报错后编译才进入b的目录编译b模块。
貌似是有个make子进程专门负责生成a目标文件,其他进程编译子模块b,c,d。本来应该是
b, c, d都编译完了,再生成a。现在成了b,c, d还没编译,就执行了生成a的规则。
十分费解
求高人解答
1. make 告警
warning: -jN forced in submake: disabling jobserver mode.
warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
在网上搜了下,只有解释是make进程间通信和参数传递相关问题,没有解释如何解决
2. 编译顺序混乱
比如说上层模块是a,有三个子模块b, c, d
报错是在生成a的目标文件时缺少b的目标文件,而在报错后编译才进入b的目录编译b模块。
貌似是有个make子进程专门负责生成a目标文件,其他进程编译子模块b,c,d。本来应该是
b, c, d都编译完了,再生成a。现在成了b,c, d还没编译,就执行了生成a的规则。
十分费解
求高人解答
|
makefile 依赖条件写的 有不有问题.
|
make -jn
n代表同时编译的进程,可以加快编译速度,n由用户计算机的配置与性能决定,当前的典型值为10。所以
make -j10
n代表同时编译的进程,可以加快编译速度,n由用户计算机的配置与性能决定,当前的典型值为10。所以
make -j10
|
cpu有几个核 n等于几, 否则没意义
|
make -jn 多线程编译是不会混淆依赖关系的
n和你的cpu核心数或超线程数相等即可,这个n一定要写,如果只是make -j 可能导致系统资源耗尽
n和你的cpu核心数或超线程数相等即可,这个n一定要写,如果只是make -j 可能导致系统资源耗尽