首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建-j$TOTAL_PROCESSORS

创建-j$TOTAL_PROCESSORS
EN

Stack Overflow用户
提问于 2011-03-10 02:47:31
回答 4查看 464关注 0票数 1

"make -j$TOTAL_PROCESSORS“是什么意思?

假设我有一个双核处理器,它将执行"make -j2“。它到底是做什么的?

我在下面添加了一个小示例

为了编译我的工具链,脚本文件使用-

代码语言:javascript
复制
pushd toolchaindir

export TARGET=powerpc-linux-gnu
export LINUX_ARCH=powerpc

TOTAL_PROCESSORS=$(grep processor /proc/cpuinfo | wc -l)
make -j$TOTAL_PROCESSORS

if [ "$?" = "0" ]; then
    echo "built toolchain successfully"
else
    echo "failed during build"
    exit 1
fi
popd
exit 0

它是如何构建工具链的?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-10 03:10:59

make -j2告诉make它可以同时运行两个shell命令。Make决定了它是否可以从你的makefile中做到这一点,所以你最好正确地写你的makefile!

考虑一下这个noddy:

代码语言:javascript
复制
1.o: 1.c
    gcc -c 1.c -o 1.o

2.o: 2.c
    gcc -c 2.c -o 2.o

prog: 1.o 2.o
    gcc 1.o 2.o -o prog

如果你说make -j2 prog,那么make聪明地决定1.o的生产完全独立于2.o。因此,它可以同时运行两个编译,而不会出现错误。的确如此。在最后的链接步骤中,在将两个目标文件合并为prog之前,Make等待这两个编译完成。

说不出的聪明,只要你的makefile是正确的(如果它们不能在-jn下工作,那么它们就是坏的!)。

票数 3
EN

Stack Overflow用户

发布于 2011-03-10 02:52:05

一句话:yes

它授权make并行启动$TOTAL_PROCESSORS编译。

票数 1
EN

Stack Overflow用户

发布于 2011-03-10 02:50:48

它将环境变量TOTAL_PROCESSORS展开为一个数字,该数字表示您有多少个CPU/核心,然后使用这个数量的并行作业运行make。

您需要查看是什么将TOTAL_PROCESSORS设置为一个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5250636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档