Tag: makefile

Makefile:如何正确包含头文件及其目录?

我有以下makefile: CC=g++ INC_DIR = ../StdCUtil CFLAGS=-c -Wall -I$(INC_DIR) DEPS = split.h all: Lock.o DBC.o Trace.o %.o: %.cpp $(DEPS) $(CC) -o $@ $< $(CFLAGS) clean: rm -rf *o all 这个makefile和所有三个源文件Lock.cpp , DBC.cpp , Trace.cpp都位于名为Core的当前目录中。 其中一个源文件Trace.cpp包含一行,其中包含当前目录之外的头文件: //in Trace.cpp #include “StdCUtil/split.h” 头文件split.h位于当前目录上方的一个级别,然后位于名为StdCUtil的子目录中。 这就是我在makefile中添加INC_DIR = ../StdCUtil的原因。 整个目录结构如下所示: root |___Core | | | |____Makefile | |____DBC.cpp | |____Lock.cpp | |____Trace.cpp […]

链接静态库

gcc版本:4:4.4.4-1ubuntu2 GNU Make 3.81 我有以下库名为net_api.a和一些头文件即 network_set.h 我已将头文件包含在main.c文件的源代码中 #include 我在以下目录中有以下静态库和标头 ./tools/net/lib/net_api.a ./tools/net/inc/network_set.h 在我的Makefile中,我尝试使用以下代码片段进行链接: INC_PATH = -I tools/net/inc LIB_PATH = -L tools/net/lib LIBS = -lnet_api $(TARGET): $(OBJECT_FILES) $(CC) $(LDFLAGS) $(CFLAGS) $(INC_PATH) $(LIB_PATH) $(LIBS) $(OBJECT_FILES) -o $(TARGET) main.o: main.c $(CC) $(CFLAGS) $(INC_PATH) $(LIB_PATH) -c main.c 但是,当我编译时,我得到以下错误: network_set.h error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘network_String’ 这里出了什么问题?

Makefile:1:***缺少分隔符。 停止

我在c上创建一个项目,当我创建我的Makefile并尝试运行它时,它给了我这个错误: Makefile:1: *** missing separator. Stop. 我的makefile代码是: CC=gcc OBJ=./objetos INC=./include FON=./aqsFonte BIB=./bibliotecas OPBIB=-lBiblioteca ProjetoFinal: libFinal.a $(CP) $(FON)/ProjetoFinal.c -I$(INC) -L$(BIB) $(OPBIB) -o ProjetoFinal Bibliotecas.a: Caminho.o Libs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o ar -q $(BIB)/libFinal.a Caminho.o ibs_Defines.o Matrizes.o Proc_Imagens.o Vetores.o Caminho.o: $(CP) $(FON)/Caminho.c -o Caminho.o Libs_Defines.o : $(CP) $(FON)/Libs_Defines.c -o Libs_Defines.o Matrizes.o: $(CP) $(FON)/Matrizes.c -o Matrizes.o Proc_Imagens.o: $(CP) $(FON)/Proc_Imagens.c […]

如何在Make中使用pkg-config

我想编译最简单的GTK程序。 我可以使用命令行编译它: gcc $(pkg-config –cflags –libs gtk+-3.0) main.c -o main.o 但是,如果我使用Make它不起作用: CFLAGS=-g -Wall -Wextra $(pkg-config –cflags) LDFLAGS=$(pkg-config –libs gtk+-3.0) CC=gcc SOURCES=$(wildcard *.c) EXECUTABLES=$(patsubst %.c,%,$(SOURCES)) all: $(EXECUTABLES) 它告诉我这个: gcc -g -Wall -Wextra -c -o main.o main.c main.c:1:21: fatal error: gtk/gtk.h: No such file or directory #include ^ compilation terminated. : recipe for target ‘main.o’ failed make: […]

/ usr / bin / ld:使用makefile编译时找不到-lc

首先:我有一个标题(event.h),一个名为event.c的程序,以及主程序main.c. 这个程序将被编译,首先生成一个目标程序(event.o),然后在一个单独的文件夹中生成一个静态库(libevent.a),然后生成可执行程序work1.exe 为此,我创建了这个makefile: work1 : main.c libevent.a gcc -static main.c -L./lib -levent -o work1 -Wall event.o: event.c gcc -c event.c -Wall libevent.a: event.o ar rcs lib/libevento.a event.o clean: rm work1 *.o 执行makefile的结果导致此错误: $ make gcc -c event.c -Wall ar rcs lib/libevent.a event.o gcc -static main.c -L./lib -levent -o work1 -Wall /usr/bin/ld: cannot find -lc collect2: […]