作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
“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
它如何构建工具链?
最佳答案
make -j2
告诉 make 它可以同时运行两个 shell 命令。 Make 决定它是否可以从您的 makefile 中执行此操作,因此您最好正确编写您的 makefile!
考虑这个 noddy makefile:
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
之前,等待这些编译完成。
非常聪明,只要你的 makefile 正确(如果它们不能在 -jn
下工作,那么它们就很糟糕!)。
关于linux - 制作 -j$TOTAL_PROCESSORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5250636/
“make -j$TOTAL_PROCESSORS”是什么意思? 假设我有一个双核处理器,它将执行“make -j2”。它到底有什么作用? 我在下面添加一个小例子 为了编译我的工具链,脚本文件使用 -
我是一名优秀的程序员,十分优秀!