我在 makefile 规则中看到过诸如echo, mv, if, 之类的东西for。似乎可以识别某种 shell 命令。这是 bash 吗?如何确定正在使用哪个 shell 以及我可以使用的完整关键字列表?
获取 makefile 变量的顶级目录部分的最简单代码是什么?例子:
BUILD_DIR = dir/subdir/.../sub-a-dub-dir
distclean:
rm -rf <some code which evaluates to "dir" from $(BUILD_DIR)>
Run Code Online (Sandbox Code Playgroud)
PS:我的意思不是$(dir $(dir $(BUILD_DIR))),而是获取任何变量值的第一个目录部分的东西。
我在工作中使用 Ubuntu,在家里使用 Slackware。
今天在工作中,我从我们公司的存储库中下载了一些可疑程序,这些程序本应自动执行一些重复性任务。我用configure; make; make install. 现在我想删除它,但不幸的是,Makefile 中没有合适的卸载目标。这个程序是用 Python 编写的,安装程序*.py在不同的地方复制了许多文件,现在删除所有文件很痛苦。
所以我考虑使用 CheckInstall 来代替,make install这样我就可以轻松删除此类程序并以一致的方式跟踪系统上的所有软件。但是我想知道是否有任何可能的与CheckInstall相关的副作用或者每次安装新软件时都可以使用它吗?你在用吗?
将服务器配置为运行单个任务(如设备)时,可能需要构建自定义内核。例如节省磁盘空间。
Ubuntu Core 13.10 amd64 根文件系统是38 MB 的下载,其中包含所需依赖项的“linux-image-generic”元包将下载79 MB的档案,而 kernel-image-xyz-generic 包的大小仍然是14 MB .
要构建从硬件不使用的模块中剥离的内核,该make localmodconfig命令是完成这项工作的正确工具。但是,运行构建和测试环境的虚拟机加载的模块与目标部署硬件不同。和/或一段时间后,您的部署硬件可能会停产,并使用不同的硬件。并且在内核更新发布的频率上,为每个不同的硬件配置构建自定义内核可能会变得太麻烦。
如何快速构建运行在几个不同硬件盒上的自定义 Linux 内核?
我正在使用 make 来处理我的应用程序的构建文件,而这些构建过程使用节点模块。由于我在本地安装这些节点模块,因此我必须在我的$PATH位置中指定调用可执行文件的位置,例如PATH=$(npm bin):$PATH.
我已经在我的 Makefile 中设置了一个变量NPMEXEC := PATH=$(shell npm bin):$$PATH,并在需要时将其添加到我的命令中。但是,对于一些较长的任务,例如在运行多个命令的测试期间,在任务的整个持续时间内进行 PATH 分配会很方便,有点像pushd/ popd。那可能吗?
在这个https://github.com/kubernetes/helm/blob/master/Makefile 中,目标前面有一个点。这个约定是为了什么?
.PHONY: all
all: build
.PHONY: build
build:
GOBIN=$(BINDIR) $(GO) install $(GOFLAGS) -tags '$(TAGS)' -ldflags '$(LDFLAGS)' k8s.io/helm/cmd/...
Run Code Online (Sandbox Code Playgroud) zsh 贝壳,oh-my-zsh 框架,zsh的配置(有或没有相同的问题zsh-completions):见.zshrc最后。如果目录包含:
makefile目标:hello,hello.o和main.o,foo,bar和baz,调用make+ TAB 显示为完成:
bar baz foo hello hello.o main.o makefile
而不仅仅是makefile的目标。
在这方面,我如何自定义zsh以使其行为bash(仅显示makefile's 目标)?
这是我的.zshrc:
export ZSH=/home/bitouze/.oh-my-zsh
ZSH_THEME="gnzh"
plugins=(git zsh-completions)
autoload -U compinit && compinit
source $ZSH/oh-my-zsh.sh
export LANG=fr_FR.UTF-8
source $HOME/.aliases
# texdoc completion
compctl -k "(($(grep …Run Code Online (Sandbox Code Playgroud) 我已经看到这make对大型项目很有用,尤其是在 a 中描述的令人困惑的依赖项Makefile,并且还有助于工作流程。我还没有听说make用于小型项目的任何优势。有吗?
我有一些脚本,但我不明白包含$(1)以下内容的行:
wget --retry-connrefused --waitretry=5 --read-timeout=30 --tries=50 --no-dns-cache https://dataverse.harvard.edu/api/access/datafile/:persistentId?persistentId=doi:$(1) -O data/tmp.tar.gz
Run Code Online (Sandbox Code Playgroud)
什么是$(1)代表?
在尝试在新的 Kubuntu 安装上构建https://gitlab.com/interception/linux/tools时,cmake ..从tools/build目录运行会返回错误:
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_CXX_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
Run Code Online (Sandbox Code Playgroud)
我刚刚安装cmake并假设它会配备它的编译器,但也许它需要配置才能使用?
make ×10
autocomplete ×1
checkinstall ×1
cmake ×1
compiling ×1
development ×1
linux-kernel ×1
oh-my-zsh ×1
scripting ×1
zsh ×1