Questions tagged «make»

对于与make有关的问题,该实用程序通过管理目标之间的依赖关系来自动执行构建过程。使用此标记可解决有关make本身的问题或有关使用make命令行实用程序引起的问题的问题。

1
将GNU-Make限制为POSIX Make行为
make在Linux中编辑或使用他人的Makefile时,是否有已知方法可以使Linux 拒绝意外使用Makefile中的GNU-Make特定扩展名?我的意思是,要限制GNU-Make使其表现为makePOSIX中指定的行为,并且拒绝任何GNU-Make特定的扩展? 该.POSIX专项的目标是不够的,按照“ 4.9特别内置目标名(gnu.org) ”。手册页中没有提到用于此目的的命令行选项。 make也可以选择使用其他实用程序。 -更新2018-10-19- 我仍然没有找到我问题的直接答案,但是至少这里有一个关于此问题的文档,在我有这个问题时还不存在该文档: 可移植Makefile教程(nullprogram.com)。
12 make  gnu-make 

3
如何使继续编译?
我知道我可以make随时中断进程,而不必再次重新编译整个源代码树。据我所知,make只有在尚未编译目标时才编译目标,或者在最后一次编译后才修改源代码。 但是,如果我打断了make,肯定会有一个或多个(取决于并发级别)半就绪的二进制文件。下次我跑步时,对他们有make什么影响?还是在我按Ctrl+ C来避免部分编译的二进制文件时完成当前目标?

4
Makefile如何检测本地计算机上是否有命令?
我开始使用org-mode在GTD风格的系统中计划任务。将每个组织文件放在Dropbox文件夹的目录中,我运行emacs来从三个不同的本地计算机(Cygwin,Mac OS X和Debian)编辑/管理这些文件。由于我也使用MobileOrg从iPad访问这些组织文件,因此,进行checksums.dat任何更改时,文件必须保持最新状态。这可以通过运行来完成md5sum *.org > checksums.dat。 问题是有三种不同的命令md5sum命令:md5sum.exe在Cygwin,md5Mac OS X和md5sumDebian中。最理想的情况是将Makefile存储在Dropbox foder中,该文件检测当前计算机中可用的命令并运行该命令以执行md5校验和操作。
11 shell  make  hashsum 

1
GNU Makefile中的进程替换
在bash提示下,可以使用伪文件执行diff: diff <(echo test) <(echo test) 将其原样添加到Makefile中失败: all: diff <(echo test) <(echo test) 错误(提示:/ bin / sh指向此系统上的/ bin / bash): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff <(echo test) <(echo test)' 这是什么意思,有没有办法在不使用临时文件的情况下仍然比较两个输出?

2
Makefile中的%符号是什么意思
我正在使用makefile,遇到%.o或%.c。据我了解,它指定所有c或o文件。但是为什么这样工作: %.o: %.c $(CC) -c $^ -o $@ 这不起作用 SOURCE := $(wildcard *.c) $(SOURCE:.c=.o): SOURCE $(CC) -c $^ -o $@ 这两个表达式都指定所有文件。那么make文件中的%.o:符号做什么呢?
11 make  gnu-make 

2
Makefile中的文件函数采用以'@'前缀的args
该代码节选自GNU makefile手册的8.6章。 Makefile中文件功能arg的@ $ @。in是什么意思?以及为什么像rm这样的shell命令以“ @”符号开头 program: $(OBJECTS) $(file >$@.in,$^) $(CMD) $(CMDFLAGS) @$@.in @rm $@.in 文件功能语法为 $(file op filename[,text])
10 make 

3
如何编写make menuconfig脚本以自动化Linux内核构建配置?
我想自动化Linux构建,但最终到了我需要运行似乎很手动的步骤的地步:make menuconfig。这似乎在OS和内核配置之间同步配置? cp git-tracked-config .config make defconfig make menuconfig # <- how to automate/script this? make V=s 基本上,如何删除对make menuconfig构建脚本的调用? 顺便说一句,这是对似乎在我从未调用过make menuconfig的情况下发生的构建错误的反应: make[1]: *** No rule to make target `include/config/auto.conf', needed by `include/config/kernel.release'. Stop. 可能是因为makefile本身不存在,或者makefile尚未生成/变形以包含该规则,但这是一个单独的问题,这可能是makefile中缺少规则的原因。 可能有一种更聪明的方法来共同解决这个问题。还有其他我没有跟踪但应该跟踪的配置(例如oldconfig)吗?

2
为什么同时使用“ make clean”和“ make mrproper”?
这是写在Linux内核Makefile是 clean - Remove most generated files but keep the config and enough build support to build external modules mrproper - Remove all generated files + config + various backup files 并在arch文档中指出 要完成准备工作,请确保内核树绝对干净。 $ make clean && make mrproper 那么如果make mrproper要彻底清除,为什么make clean要用呢?
10 linux  make  gnu 

3
使抱怨“缺少分隔符(您是说TAB吗?)”
在尝试安装som_pak-3.1-NAcMoS.tar.gz文件时,我使用了以下命令: $ tar xvf som_pak-3.1-NAcMoS.tar.gz $ cd som_pak-3.1 $ cp makefile.unix makefile $ make $ cd .. $ ln -s som_pak-3.1 $NACMOS_HOME/som_pak 但是在执行make命令时,出现以下错误: *缺少分隔符(您是指TAB而不是8个空格吗?)。停止。 有人可以告诉我错误的原因吗? 是否需要包含任何软件包?
10 compiling  make 

1
如何使用支持多台机器硬件的localmodconfig构建自定义内核?
将服务器配置为运行单个任务(如设备)时,可能会需要构建自定义内核。例如节省磁盘空间。 Ubuntu Core 13.10 amd64根文件系统的下载量为38 MB,其中包括所需依赖项的“ linux-image-generic”元软件包将下载79 MB的档案,而kernel-image-xyz-generic软件包的大小仍为14 MB。 对于构建从硬件不使用的模块中剥离的内核,该make localmodconfig命令是完成任务的正确工具。但是,运行构建和测试环境的虚拟机将加载与目标部署硬件不同的模块。和/或一段时间后,您的部署硬件可能会失效,并且使用了其他硬件。在发布内核更新的频率上,它可能变得太麻烦了,无法为每种不同的硬件配置构建自定义内核。 如何快速构建在几个不同硬件盒上运行的自定义Linux内核?

1
是否有任何CheckInstall副作用,还是我应该每次使用它?
我在工作中使用Ubuntu,在家里使用Slackware。 今天,在工作中,我已经从我们公司的存储库中下载了一些可疑程序,该程序应该可以自动执行某些重复性任务。我用安装了它configure; make; make install。现在,我要删除它,但是很遗憾,Makefile中没有合适的卸载目标。该程序是用Python编写的,安装程序*.py在多个位置复制了许多文件,现在要删除所有文件很痛苦。 因此,我想到了用CheckInstall代替它,make install以便我可以轻松删除此类程序并以一致的方式跟踪系统中的所有软件。但是我想知道是否有任何与CheckInstall相关的副作用,还是在每次安装新软件时都可以使用它?你在用吗?

5
通过Makefile将目录添加到PATH
将我在Makefile中修改的PATH导出到当前终端中时遇到一些麻烦。我试图将Makefile目录所在的bin文件夹添加到PATH中。 这是makefile的相关部分: PATH := $(shell pwd)/bin:$(PATH) install: mkdir -p ./bin export PATH echo $(PATH) 回显可以正确打印,但是如果我在终端中重做回显,则PATH保持不变。

6
在小型项目中使用`make`有什么好处?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 我已经看到这make对于大型项目很有用,尤其是在中描述了令人困惑的依赖关系时Makefile,还有助于工作流程。make对于小型项目,我还没有听说过任何优势。有吗

1
默认使用多线程make?
有什么方法可以在系统范围内make使用多线程(在我的系统上,最好是6个线程),而不是仅通过添加-j6到命令行来使用?那么,如果我跑步make,它的行为与我跑步时相同make -j6吗?我想要此功能,因为我使用pacaur(我在Arch上)从AUR安装了很多软件包,因此我不直接运行make命令,但我仍然希望多线程来更快地构建软件包。

1
make-kpkg和make deb-pkg之间的区别
我想知道make-kpkg和之间的确切区别make deb-pkg。这个问题问的差不多,但没有令人满意的答案。以前我在用 make -j `getconf _NPROCESSORS_ONLN` deb-pkg 编译内核源代码树并生成header + kernel-image debian软件包。我发现它非常慢,因为要在我的第二代Intel i3 CPU上编译需要1个多小时。然后我发现另一种使用方法make-kpkg比deb-pkg以前使用的方法快5-6倍。我运行的代码 fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers -j `getconf _NPROCESSORS_ONLN` 并且只需要10-15分钟即可编译并生成deb软件包。在这两个编译过程中,工作都被划分了,_NPROCESSORS_ONLN那么有什么区别呢?提前致谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.