Articles of makefile

用“cc”代替“arm-none-eabi-as”

使用makefile编译程序时遇到问题。 make尝试编译名为“startup.S”的程序集文件时只有一个问题。 它看起来像使用编译器“cc”,即使我指定“arm-none-eabi-as”在一个生成文件(看看variablesAS)。 这是我的makefile: SHELL := /bin/bash ROOT := $(shell pwd) INC := $(ROOT)/inc SRC := $(ROOT)/src STR := $(ROOT)/str EXE := exe AS := arm-none-eabi-as -mcpu=arm926ej-s -c -Wall -I $(INC) -I$(SRC) -I $(STR) GCC := arm-none-eabi-gcc -mcpu=arm926ej-s -c -Wall -I $(INC) -I$(SRC) -I $(STR) LDSCRIPT := test.ld LD := arm-none-eabi-ld -T $(LDSCRIPT) HEADERS := […]

如何在Linux和Solaris中编译C?

我想要Makefile可以在Linux和Solaris中编译。 我知道如何单独做到这一点,但我怎样才能将两者结合起来,并能够检测出我正在使用的操作系统? 我正在试图做一个简单的C文件 – 但它是编译器的名称更改。

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

嘿,我只是有一个关于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 […]