我正在使用 gnu make 并且在我拥有的 Makefile 中,我看到以下规则。我想在食谱中添加类似的规则,但是当我通过为食谱提供选项卡或空格在下一行添加规则及其食谱时,我会出错。
dummy :
@echo $(OBJS)
Run Code Online (Sandbox Code Playgroud)
当我打开 vim 命令 :set list 时,我看到:
dummy :$
^I@echo $(OBJS)$
Run Code Online (Sandbox Code Playgroud)
从行首缩进的配方行(第二行)之前的字符究竟是什么?
如何使用键盘输入它们(无需复制粘贴现有规则然后修改它?
我在哪里可以找到用于从头开始创建 Makefile 的各种空格/缩进的信息(不是 automake/或其他工具创建的 makefile)?
当我编译东西时,我通常想快速完成,所以在我的工作站上我发出
make -j16
Run Code Online (Sandbox Code Playgroud)
并且 (gnu) make 开始使用 16 个内核进行编译。但是,当我回到笔记本电脑上时,那里没有 16 个内核。因此,当我在那里发出相同的命令时,我的机器会死机。我无法通过 CTRL+ALT+F1 等切换到备用终端,远程登录也不会成功。CTRL+C, CTRL+4 都不考虑。(顺便说一句:没有自动杀死会成功,例如自动内存不足)然后我必须关闭我的机器。(我使用带有内核 3.0.x 的 Ubuntu 11.10)
一种解决方案是预先获得当前机器上可用的内核数量,并使用一个小的 make 目标,而任何其他“并行”目标都依赖于并且不直接使用“make -j $NUMCORES”。(我已经这样做了,并通过一个使用 boost 线程的小型 c++ 程序实现了)。但这不会保护我不小心再次指定“make -j16”。
此外,“太多”内核不能与可用内核数量(包括线程内核)相同,因为 +1 或 +2 线程仍然不会杀死机器。
我可以使用 ulimits 来缓解这个问题吗?我想指定将交换空间设置为 0。然后我应该改变中止我猜。
我有一个运行 linux 的嵌入式系统。我需要安装一些软件,特别是uucp包含cu命令的包。这真的是我所需要的。
目前我所拥有的只是通过 COM 端口对系统的 root 访问。所以只有命令行。该系统可以访问互联网。
问题是我不是一个非常有经验的 linux 用户,我遇到了以下困难:
*.tar.gz使用下载包wget,我已经解压并执行了./configure,但是当我运行时make,我得到bash: make: command not found. 所以我假设缺少 binutils 或其他重要的东西,我将无法从源代码安装它。任何人都可以提出解决方法吗?我错过了什么?
编辑 1:输出compgen -c(根据 Matthew Williams 的要求)
if
then
else
elif
fi
case
esac
for
select
while
until
do
done
in
function
time
{
}
!
[[
]]
.
:
[
alias
bind
break
builtin
caller
cd …Run Code Online (Sandbox Code Playgroud) 我确定之前已经问过这个问题,但经过一段时间的搜索,我没有找到我想要的。
我有一台无法安装 GCC 或其他开发需求的测试服务器。在我的开发 linux 计算机上,我可以 ssh 到测试服务器,我想安装某些需要运行 ./configure 和 make 的包。
有没有办法在我的计算机上运行指向远程主机的 make 进程以这种方式安装?
我想在我的 Ubuntu 13.10 上安装一个相对较大的包,我想使用我机器的所有处理核心。我打字
使-j N
N我猜可用内核数+1在哪里。但问题是我不知道我有多少个内核。我怎样才能在 Ubuntu 中弄清楚呢?
In working towards resolving https://tex.stackexchange.com/a/160685/17423, I'm looking to create a batch-file version of this makefile.
是否有一种清晰/传统的方法来模拟 Make 的“目标”功能?我不需要花哨的依赖解析make提供的——只是某种(希望是干净的)语法。