Articles of makefile

从生成文件运行可执行文件

嘿,我只是有一个关于makefile的快速问题。 有没有办法自动运行从生成文件生成的可执行文件? 就像如果我只是input“make”它将编译和构build并自动执行,所以我可以跳过额外的步骤./myExecutable 我在笔记里写下: run: prog1 ./prog1 但似乎没有工作。 谢谢

如何避免“没有这样的文件或目录”错误的“make clean”Makefile目标

我有一个Makefile,它定义了一个.PHONY干净的目标清理.o文件和可执行文件,目标看起来像这样: … .PHONY : clean clean: rm $(addprefix $(vq_DIR),$(vq_OBJS)) \ $(addprefix $(vq_DIR),vq) \ $(addprefix $(covq_DIR),$(covq_OBJS)) \ $(addprefix $(covq_DIR),covq) \ $(addprefix $(covq_2_DIR),$(covq_2_OBJS)) \ $(addprefix $(covq_2_DIR),covq_2) \ $(addprefix $(covq_2_DIR),$(test_OBJS)) \ $(addprefix $(covq_2_DIR),test) 一切工作,因为它应该,但是当这些文件中的一些不存在, rm引发错误(没有这样的文件或目录),输出说,当明确做我想要的Makefile目标失败。 有没有一种好的方法来基本告诉rm命令“如果这些文件存在,删除这些文件,不要抱怨,如果他们不”? 我抬头看了那个手册,没有find这样的标志。 编辑:我其实没有注意到在手册页中的-f标志的描述,这是解决scheme。

如何安排一个Makefile来编译一个具有多个.c文件的内核模块?

如何安排一个Makefile来编译一个具有多个.c文件的内核模块? 这是我目前的Makefile。 它是由KDevelop自动生成的 TARGET = nlb-driver OBJS = nlb-driver.o MDIR = drivers/misc EXTRA_CFLAGS = -DEXPORT_SYMTAB CURRENT = $(shell uname -r) KDIR = /lib/modules/$(CURRENT)/build PWD = $(shell pwd) DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR) obj-m += $(TARGET).o default: make -C $(KDIR) M=$(PWD) modules $(TARGET).o: $(OBJS) $(LD) $(LD_RFLAG) -r -o $@ $(OBJS) ifneq (,$(findstring 2.4.,$(CURRENT))) install: su -c "cp -v […]

如何使用带有NOTPARALLEL标签的makefile?

我在Makefile中有5个标签: all: label1 label2 label3 label4 last_label 我想last_label最后完成,我想使用make -j 。 如果我使用.NOTPARALLEL ,它会使所有的NOTPARALLEL ,有关如何做的build议?

从Android源(AOSP)构build一个工具

目前,我正在使用Amazon AWS上的AOSP ROM Builder图像来构buildAndroid。 关键是,我只对在path中为主机(linux)构build的外部工具grxmlcompile感兴趣: aosp/out/host/linux-x86/bin 源位于aosp/external/srec/tools/grxmlcompile 我不是很熟悉Linux和制作文件,因此我很难做到这一点。 我想复制源(如果需要整棵树),并在另一台Linux机器上构build这个工具。 我无法find我需要运行的构build文件来构build这个部分。 更新:看起来像make out/host/linux-x86/bin/grxmlcompile会做这个工作。 我仍然希望能够只将源代码树的所需部分移植到构build机器上

Makefile命令replace问题

给定不同的configuration文件时, rebar不会自动重build文件。 所以,我试图在Makefile级别上做到这一点: REBAR=./rebar REBAR_DEBUG=$(REBAR) -C rebar.debug.config REBAR_COMPILE=$(REBAR) get-deps compile LAST_CONFIG:=$(cat config.tmp) PLT=dialyzer/sqlite3.plt all: config_normal compile compile: $(REBAR_COMPILE) test: $(REBAR_COMPILE) eunit clean: -rm -rf deps ebin priv doc/* .eunit c_src/*.o docs: $(REBAR_COMPILE) doc static: config_debug $(REBAR_DEBUG) get-deps compile ifeq ($(wildcard $(PLT)),) dialyzer –build_plt –apps kernel stdlib erts –output_plt $(PLT) else dialyzer –plt $(PLT) -r ebin […]

Makefile – 找不到共享库

我有一个C ++ Linux项目的Makefile: MODE ?= dbg DIR = ../../../../../somdir/$(MODE) SRC_FILES = a.cpp b.cpp H_FILES = ah LDFLAGS += -L$(DIR)/lib/linux '-Wl,-R$$ORIGIN' CPPFLAGS = -I$(DIR)/include LIBRARIES = -lsomeso ifeq (rel, $(MODE)) CFLAGS = -Wall -g -DNDEBUG else CFLAGS = -Wall -ansi -pedantic -Wconversion -g -DDEBUG -D_DEBUG endif sample: $(SRC_FILES) $(H_FILES) Makefile g++ $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(LIBRARIES) $(SRC_FILES) […]

如何处理链接器错误:错误 – 找不到-lgcc

这是我的makefile: task0 : main.o numbers.o add.o gcc -m32 -g -Wall -o task0 main.o numbers.o add.o main.o : main.c gcc -g -Wall -m32 -ansi -c -o main.c numbers.o : numbers.c gcc -g -Wall -m32 -ansi -c -o numbers.c add.o: add.s nasm -g -f elf -w+all -o add.o add.s clean : rm -f *.o task0 这是terminal输出: gcc […]

在我的项目中添加对menuconfig / Kconfig的支持

我打算在我的项目中添加对menuconfig的支持。 该项目没有与Linux内核相关联,所以我必须从头开始在menuconfig和Makefile中编写所有的东西。 如何添加对menuconfig的支持并创buildKconfig并使makefile读取.config中的定义。 任何好的教程开始?

如何更新make 3.81 linux

我是Linux新手(昨天安装了新的),我需要它在我的大学编程课程,我被告知要安装特定版本的特定程序,但我已经使用apt-get install来安装他们(以前做过apt-get更新)他们没有在正确的版本。 我需要的程序是4.0和valgrind 3.10.1。 apt-get installs make 3.81和valgrind 3.10.0.SVN。 我已经尝试input“apt-get install make4.0”和“apt-get install valgrind10.3.1”无济于事。 我已经从互联网上下载了它们,并按照我能理解的安装新版本的说明进行操作,但它一直说我有旧的版本。 (我不确定是否可以在这里发布直接链接,如果我可以让我知道,我会张贴我从哪里得到他们)。 我做错了什么? 我怎样才能解决这个问题? 我目前正在运行Linux Mint。 预先感谢您的任何答复。