Questions tagged «make»

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

3
如何将makefile中给定的依赖关系显示为树?
问题 我想查看makefile的一个或多个目标的依赖关系。因此,我正在寻找一个程序,该程序可以解析makefile,然后以树状格式(缩进,ascii-art,...)或图形(点,...)表示依赖项。 类似 有一些程序可以在其他情况下执行此操作: pactree或btreeree可以树状格式(例如ascii格式)或dot图形形式显示相应格式软件包的依赖关系, gcc -M source_file.c 将C源文件的依赖性显示为生成规则, pstree显示进程树的ascii表示。 进展 在网上搜索时,我发现没有什么帮助。那导致我尝试 make --always-make --silent --dry-run some_target | \ grep --extended-regexp 'Considering target file|Trying rule prerequisite' 但看起来我必须在perl或python中破解一些其他解析代码,才能将其表示为漂亮的树/图。而且我还不知道我是否真的会以这种方式获得完整正确的图表。 要求 最好以某种方式限制图形(没有内置规则,只有给定的目标,只有一定的深度),但是在大多数情况下,我只是在寻找一种工具,该工具将给我一些“合理的”,人类的依赖关系。 -可见格式(例如“相似”下的程序)。 问题 是否有任何程序可以做到这一点? 我会从中获得完整和正确的信息make -dnq ...吗? 有没有更好的方法来获取此信息? 是否已经存在用于解析此信息的脚本/尝试?

4
为什么人们在使用双核CPU时建议使用-j3选项进行制造?
在Gentoo Linux中,可以设置MAKEOPTS变量/etc/portage/make.conf以告知make构建软件包时应并行运行多少个作业。由于我有一个双核CPU,因此我天真地选择使用该-j2选项:每个核一个作业,因此两者都有事情要做。“问题”有很多参考,它们告诉拥有双核CPU的用户设置该-j3选项。他们之中有一些是: Gentoo手册 Gentoo维基 make.conf(5)手册页 例如,Gentoo手册中说: 一个不错的选择是系统中的CPU(或CPU内核)数量加一个,但是此指南并不总是很完美。 但是“ CPU + 1”规则的基本原理是什么?为什么要增加工作? make.conf(5)手册页甚至说: 建议的设置在CPU + 1和2 * CPU + 1之间。 我还阅读了make信息页的5.4节(并行执行)和make该-j选项的手册页说明,但似乎那里没有答案。
18 gentoo  make 

1
如何列出make中的所有目标?
假设您有一个包含许多Makefile的项目结构,并且有一个包含所有其他文件的顶级Makefile。 您如何列出所有可能的目标? 我知道写 make 然后通过选择以获取建议通常可以解决问题,但在我的情况下,目标为10000。这样做会使结果传递更多,并且由于某种原因滚动列表也会导致冻结。还有另一种方法吗?
18 make 

2
.PHONY GNU make文件中的所有规则?
我的解释是错误的,我基本上应该首先将所有规则都放在首位: .PHONY: all of my rules all: echo "Executing all ..." of: echo "Executing of ..." my: echo "Executing my ..." rules: echo "Executing rules ..." 是否曾经有人不想遵循这个“公式”? http://www.gnu.org/software/make/manual/make.html#Phony-Targets
18 make 

2
如何在Linux内核模块中包括本地头文件
说我有一个mymod包含源文件的模块,如下所示: src / mod / mymod.c src / inc / mymod.h 我尝试包括mymod.h如下 #include <mymod.h> 我的makefile包含EXTRA_CFLAGS= -I$(shell pwd)/../inc/但在制作内核时,出现错误提示: 找不到mymod.h 原因似乎是在制作内核模块时,此命令从makefile:运行(使用makeV1): make -C <path/to/linux/src> M=<path/to/mymod> modules 在其他作品中我$(shell pwd)扩展到了<path/to/linux>。这不是我想要的。我如何指定-I参数设置为指向src/inc我的mymod源代码树?
17 linux  kernel  compiling  make 

5
在多核上编译时,可能导致make挂起的原因是什么?
昨天我正尝试从源代码编译ROOT软件包。由于我是在6核怪物机器上进行编译的,因此我决定继续使用并使用多核进行构建make -j 6。最初编译过程非常顺利,而且速度非常快,但有时make仅在一个内核上使用100%CPU即可挂起。 我进行了一些谷歌搜索,并在ROOT留言板上找到了此帖。自从我自己构建了这台计算机以来,我担心自己没有正确安装散热器,并且CPU过热或其他原因。不幸的是,我在工作中没有冰箱可以插入。;-) 我安装了lm-sensors软件包并make -j 6再次运行,这次监视CPU温度。尽管温度很高(接近60摄氏度),但从未超过高温或临界温度。 我尝试运行,make -j 4但是make在编译过程中的某个时间再次挂起,这次是在另一个位置。 最后,我仅在运行时进行编译make,并且运行良好。我的问题是:为什么挂了?由于它停在两个不同的位置,我想这可能是由于某种比赛条件造成的,但是我认为make应该聪明到足以使所有东西都处于正确的顺序,因为它提供了-j选择。
17 linux  compiling  make 


2
为什么当前目录在makefile中没有更改?
我正在尝试运行一个简单的脚本-将git存储库克隆到某个目录,然后克隆cd到该目录以执行安装脚本。 该脚本在Makefile中。 但是cd似乎不起作用。找不到我的安装脚本。 我cd在脚本中的后面添加了pwd ,它向我显示了我执行脚本的目录,而不是我cd进入的目录。 有什么问题? git clone http://somerepo ~/some_dir cd ~/some_dir/ pwd python myscript.py install => pwd: /hereIsPathToDirectoryFromWhichIRunTheScript python:无法打开文件“ setup.py”:[Errno 2]没有这样的文件或目录 也不适用于./setup.py。 如果输入绝对路径~/some_dir/setup.py,脚本稍后将失败,因为它试图访问同一文件夹中的资源。
14 make  cd-command 

1
如何解决“跳过不兼容的/usr/lib/libc.a”
当我尝试在64位Fedora 16(Verne)上构建嵌入式Linux目标时,出现以下错误: make[3]: Entering directory `/export/home/git/minerva-5.x/third_party/multifiles' mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o md5.o md5.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o bitmapfs.o bitmapfs.c mips-linux-gnu-gcc -EL -O -D_GNU_SOURCE -Wall -isystem /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/include -c -o mfcln.o mfcln.c mips-linux-gnu-gcc -EL -Wl,-rpath /export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -L/export/home/git/minerva-5.x/cs_rootfs_1.2.15/cross_rootfs/lib -o mfcln md5.o bitmapfs.o mfcln.o mulfiles.h …
13 fedora  make  glibc 

2
模拟“ make install”(模拟运行)或模拟器实用程序的运行?
是否有运行bash脚本和查看生成的命令的通用方法,而不是实际运行的命令-即“空运行” /各种模拟器? 我有一个我希望运行的数据库安装脚本(实际上是在运行./configure和make之后的“ make install”),但是它正在安装各种我不想要的东西。 因此,我希望有一种方法可以在真正运行它之前确切地了解它的作用-甚至可以手动运行命令。 是否有可以执行此类任务(或任何相关/相似)的实用程序?

5
从menuconfig角度比较两个内核配置文件?
我遇到的情况是我有两个内核配置文件(用于同一内核源)。两者都有我需要的功能的一部分(一方面,USB正常工作,另一方面,第二个I2C)。 我知道,从menuconfig的角度来看,两个配置文件之间的区别仅包括几个选定的选项。(但不知道是哪一个) 但是,当手动比较配置文件(在两个.config文件之间合并)时,区别并不容易识别。我尝试过手动合并它们,但没有成功。我相信最终我会成功的,但是我相信,如果将文件以出现在menuconfig中的方式进行比较,则过程可能会更加轻松。 可以实现吗?如果可以,如何实现?

2
make -j(不带参数)是否危险?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 今天早些时候,建设东西的时候,我决定运行make为 $ make -j 也许是出于与其他软件的习惯,如cabal其中-j默认为一个合理的限度。 大约20秒后,我的整个桌面都停了下来。我寻找各种活动迹象。没有风扇旋转。HDD指示灯呈绿色常亮,但是我听不到磁盘活动。嗯 沉默了10分钟之后,我终于看到了对我几年前做出的第一次按键的反应,并且我也开始听到人们耳熟能详的磁盘颠簸声。20分钟后,我慢慢尝试涉足这台无响应机器上的终端,然后我倒下并使用了REISUB。 起初,我认为一个不相关的桌面应用程序一定是罪魁祸首,因为我早就在交互式bash会话中设置了内存限制,以防止我陷入这种情况!但/var/log/syslog讲述了一个不同的故事; 在OOM杀手留下一些ps垃圾场被怀疑的包装与c++和cc1plus流程! 这是其中一个转储的频率分析: Command Number of appearances 'sh' 322 'c++' 321 'cc1plus' 321 'chrome' 27 'make' 27 'bash' 3 all else combined 120 因此,我检查了GNU make的手册页:(添加了重点) -j [jobs],--jobs [= jobs]指定要同时运行的作业(命令)数。如果有多个-j选项,则最后一个有效。 如果给-j选项不带参数,make将不会限制可以同时运行的作业数量。 我不愿意看到我是否能重现该问题(医生,我这样做时,它会伤害这个 ...) ,但调查的结果似乎到目前为止是一个本垒打:显然,make -j与数百产生过程必须有是挂起和磁盘抖动的原因。也就是说,在互联网上搜索时,我找不到很多警告。我在得出结论吗? 是make -j因为危险的,因为它似乎给我吗? 如果是这样,为什么在地球上呢?如何对它进行白痴验证?

1
尝试执行“ cc1”时出现GCC错误
我正在笔记本电脑上运行Raspberry Pi的Linux内核(运行debian 7)(遵循Raspberry Pi Kernel Compilation中的说明);但是当编译时 make ARCH=arm CROSS_COMPILE=${CCPREFIX} 我收到以下消息: CHK include/linux/version.h CHK include/generated/utsrelease.h make[1]: `include/generated/mach-types.h' is up to date. CC kernel/bounds.s gcc: error trying to exec 'cc1': execvp: No such file or directory make[1]: *** [kernel/bounds.s] Error 1 make: *** [prepare0] Error 2 我发现问题是找不到cc1或未gcc正确安装cc1 (所以我重新安装了gcc,apt-get --reinstall install gcc但是没有运气)。 gcc …

2
使用Make出现“无目标”错误
我正在学习如何使用make和生成文件,所以我写了这个小文件: %.markdown: %.html pandoc -o $< $@ 但是当我跑步时make,我得到的只是发生了make: *** No targets. Stop.什么事?
12 make 

3
如何解决“ make:没有规则可以使目标`config'”?[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加细节并通过编辑此帖子来澄清问题。 6年前关闭。 当我输入make config终端时,系统会回应: make: *** No rule to make target `config'. Stop. 知道如何解决该问题吗?
12 make 

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.