我有一个现有的且正在工作的 Makefile,并且想要添加 MariaDB (mysql.h)。 我的问题是:
gcc -o example MariaDBTest.c $(mariadb_config --include --libs)
工作正常。但是我如何/在哪里可以将它插入到我的 Makefile 中:
CC = gcc -Wno-unknown-pragmas -Wall -Wextra
PKGCONFIG = $(shell which pkg-config)
CFLAGS = $(shell $(PKGCONFIG) --cflags gtk+-3.0 --libs) -lbcm2835 -rdynamic -lm
DEPS = LinkedList.h StructDefinitions.h
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
OBJ = reTerminal.c \
Sensors/CpuGpuTemp.c Sensors/ReadSensores.c Sensors/TempSensorExtern.c \
Connectivity/ClientSide.c Connectivity/ServerSide.c \
GUI/MainApp.c GUI/MainAppWindow.c GUI/BasicFrame.c GUI/SimpleFrame.c \
Data/MariaDBTest.c
Main: $(OBJ)
$(CC) -o $@ $^ $(CFLAGS)
系统:Linux/RasPi5
这对我来说看起来不对:
$(shell $(PKGCONFIG) --cflags gtk+-3.0 --libs)
您确定没有收到编译器关于未使用的链接器选项或其他内容的警告吗?
您应该将编译标志 (
CFLAGS
) 与链接器标志分开(按照惯例,LDLIBS
)。 像这样写:
CFLAGS := $(shell $(PKGCONFIG) gtk+-3.0 --cflags) $(shell mariadb_config --include)
LDLIBS := $(shell $(PKGCONFIG) gtk+-3.0 --libs) $(shell mariadb_config --libs) -lbcm2835 -rdynamic -lm
...
%.o: %.c $(DEPS)
$(CC) $(CFLAGS) -c -o $@ $<
...
Main: $(OBJ)
$(CC) $(CFLAGS) -o $@ $^ $(LDLIBS)