【发布时间】:2022-11-05 05:44:00
【问题描述】:
我是 C 编程和 Makefile 的新手。
我的 c 代码中有一个函数,它使用 strlcpy 来复制字符串。
我不允许在我的代码中使用 #include <bsd/string.h> 所以我已经包含了 #include <glib.h> 。 但是在编译makefile时,
收到错误:
/usr/bin/ld: reg_maker.o: 在函数main': /home/reg_maker.c:66: undefined reference to strlcpy'
/usr/bin/ld: /home/reg_maker.c:67: 未定义对“strlcpy”的引用
下面是我使用的makefile:
OUT=reg_maker
OBJS=reg_maker.o
CC=gcc
IDIR = -I../../../include -I../../../include/xxxx -I/usr/include/json-c/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/include/glib-2.0 -I/usr/include
FLAGS= -c -g -Wall
LFLAGS= -lcrypto -ljson-c -lglib-2.0
all: $(OBJS)
$(CC) -g $(OBJS) -o $(OUT) $(LFLAGS)
reg_maker.o:reg_maker.c
$(CC) $(FLAGS) reg_maker.c $(IDIR) $(LFLAGS)
clean:
rm -f $(OBJS) $(OUT) reg_maker.bin`
我正在使用 ubuntu vm version- 20.04 ,我有 glib-2.0 库。
谁能帮我看看我必须在make文件中做些什么改变才能用strlcpy编译它
提前致谢
【问题讨论】:
-
Makefile 掩盖了这个问题。首先弄清楚如何在没有 Makefile 的情况下进行构建。
-
约定很重要。
LFLAGS是 lex 的标志。LDFLAGS是链接器的标志。