Articles of makefile

绘制由make生成的DAG?

我的理解是,当make执行时,它会在内部生成一个DAG来表示项目中的所有依赖项。 有没有办法得到这个DAG,并用Graphviz这样的图表来表示呢? 我在Ubuntu 8.04上使用gnu make。 编辑 我只是碰到了这些叫做mamdag和mamdot的工具。 他们应该与nmake和gnu make一起工作,但我似乎无法findgnu使得吐出mam文件的选项。 它可以在这里下载 – 这些包: 在里面 AST-基 AST-GPL 刚刚在AT&T的Glenn Fowler发现了这篇描述MAM语言和mamdot工具的文章。 看起来你必须补丁牛羚使这个工作,虽然我不是100%肯定呢。 也许还有另一种方式?

为什么我在尝试使用“make”安装某些东西时被拒绝?

我试图安装的东西,这是抛出一个错误:当我尝试运行make Permission denied 。 我不太喜欢unix / linux的普遍规则,也不太喜欢用户权限。 我最好的猜测是,我login的用户没有运行make命令的权限,但希望这是别的,不允许我安装。 为什么我会获得Permission denied ,我应该检查或configuration什么来尝试授予权限? 编辑 错误信息: gcc -I. -O3 -o pp-inspector pp-inspector.c make: execvp: gcc: Permission denied make: [pp-inspector] Error 127 (ignored) gcc -I. -O3 -c tis-vnc.c -DLIBOPENSSL -DLIBOPENSSLNEW -DLIBIDN -DHAVE_PR29_H -DLIBMYSQLCLIENT -DLIBPOSTGRES -DHAVE_MATH_H -I/usr/include/mysql make: execvp: gcc: Permission denied make: *** [tis-vnc.o] Error 127

从几个源文件构build一个内核模块,其中一个与模块具有相同的名称

是否可以从几个源文件构build一个内核模块,其中一个与模块具有相同的名称。 例如:我想用下面的源文件构build“mymodule.ko”: mymodule.c的 mymodule_func.c 这个makefile不起作用: #Makefile obj-m += mymodule.o mymodule-objs := mymodule.o mymodule_func.o 谢谢

ldconfig错误:不是一个符号链接

运行时: sudo /sbin/ldconfig 出现以下错误: /sbin/ldconfig: /usr/local/lib/ is not a symbolic link 当我运行文件: file /usr/local/lib/ /usr/local/lib/: directory 在/usr/local/lib/里面有三个我使用的库。 我将在这里称为lib1 , lib2和lib3 。 现在,当我在我的二进制文件上执行ldd时,结果如下: lib1.so => not found lib2.so => not found lib3.so => /usr/local/lib/lib3.so (0x00216000) 但是,所有的文件都在/usr/local/lib/{lib1,lib2,lib3}.so文件夹中。 每次运行ldconfig ,都会出现相同的错误: /usr/local/lib/ is not a symbolic link 我以为/usr/local/lib应该在/etc/ld.conf.d/*.conf声明两次,但不是: sudo egrep '\/usr\/local' /etc/ld.so.conf.d/* projectA.conf.old:/usr/local/projectA/lib local.conf:/usr/local/lib ld.so.conf只包含/etc/ld.so.conf.d/*.conf ,所以这个*.old不会被处理,而是指向/usr/local/projectA/lib 。 经过一段时间我删除了所有的lib1和lib2(在某些时候我testing了它的二进制文件夹),同样的错误发生。

在一个makefile文件中,目录名称是一个虚假的目标还是“真正的”目标?

根据我读到的有关makefile的信息,虚假目标是任何不符合实际文件名的目标。 我的直觉说,作为一个目标的目录将被视为一个文件。 为什么这很重要? 我有一个目录作为我的生成文件中的目标。 当我把它作为我的主要可执行文件的先决条件时,总是得到可执行文件,不pipe是否所有文件都是最新的。 如果我把它作为先决条件,我的makefile是足够聪明的,知道什么时候需要build立,但我有问题,不知道是否需要创build目录。 根据我所读到的关于make的东西,任何假目标都不是先决条件,因为make并不知道它是否是最新的,所以他们总是会重build相关的目标。 这是我的makefile的摘录。 $(EXEC_WITH_PATH): ${OBJ_DIR} $(DPEND) $(OBJS) @echo "——————————————–"; @echo "$(THIS_DIR) $(MACHINE)"; @echo "Linking Shared Library"; @echo "ar -rc $(EXEC_WITH_PATH) INSERT::{OBJS}"; ar -rc $(EXEC_WITH_PATH) $(OBJS); @echo "——————————————–"; # Make dirs for object code and links ${OBJ_DIR} : @if [ ! -d ${OBJ_DIR} ]; then \ mkdir ${OBJ_DIR}; \ fi; 那么在这种情况下, […]

Linux Makefile的结构和文档

我很难理解一个Makefile的结构。 你能指点我一个好的资源来看吗?

漂亮的打印makefiles

linux内核(以及包括git在内的各种其他项目)都有非常好的makefile,可以将巨大的cc调用隐藏起来。 例如: gcc -O2 -o cool.o cool.c -llib gcc -O2 -o neat.o neat.c -llib 会成为: CC cool.c CC neat.c 如果你有一个大量的文件和长的编译器标志的项目,这是非常好的。 我记得这是为了抑制默认的输出和自定义输出。 你怎么做呢?

Android中的eng和用户debugging版本之间的区别

我想知道两个build_flavor的区别。 工程师和用户debugging eng和用户build立口味之间的区别是安静的。 但是eng和用户debugging让我有点困惑。 eng中提供的附加debugging工具是不是在用户debugging中出现的? 例如。 If I take only the Kernel being built: Will the Debugging levels differ for the eng and user-debug builds? 我面临一个问题,用户debugging版本在Android手机上启动。 但是build造不是,build筑风格是两个build筑之间的唯一区别。 任何帮助/指针表示赞赏。 谢谢!

如何在启用“墙”时禁用特定的警告

我在我的Makefile中使用了-Wall -Werror ,但是我想禁用以下特定types的警告: warning: '_wrap_delete_DMXTSFILTER' defined but not used 我该怎么做?

在conf文件中更改configuration文件的最好方法是什么?

最初我使用了一个makefile来在linux部署我的应用程序。 我有各种sed命令来replacePHP上传文件大小,文章大小,日志文件位置等variables。 现在我正在转向合理的。 我知道我可以复制这些文件,但我怎样才能更改conf文件? 就好像我只想更改upload_filesize = 50M参数。 我不想复制整个conf文件,然后用我的文件replace。 有时候,这只是一个单线的变化。 有没有更好的方法来编辑configuration文件在ansible?