"make -j$TOTAL_PROCESSORS“是什么意思?
假设我有一个双核处理器,它将执行"make -j2“。它到底是做什么的?
我在下面添加了一个小示例
为了编译我的工具链,脚本文件使用-
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它是如何构建工具链的?
发布于 2011-03-10 03:10:59
make -j2告诉make它可以同时运行两个shell命令。Make决定了它是否可以从你的makefile中做到这一点,所以你最好正确地写你的makefile!
考虑一下这个noddy:
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下工作,那么它们就是坏的!)。
发布于 2011-03-10 02:52:05
一句话:yes
它授权make并行启动$TOTAL_PROCESSORS编译。
发布于 2011-03-10 02:50:48
它将环境变量TOTAL_PROCESSORS展开为一个数字,该数字表示您有多少个CPU/核心,然后使用这个数量的并行作业运行make。
您需要查看是什么将TOTAL_PROCESSORS设置为一个值。
https://stackoverflow.com/questions/5250636
复制相似问题