'linker input file unused because linking not done' 出错时 运行 make
'linker input file unused because linking not done' error when running make
我正在编译我为项目编写的 C 程序。
目标
正在编译 get_next_line.c
和 get_next_line_utils.c
。
结构
我的文件夹中有 3 个文件,get_next_line.c
、get_next_line_utils.c
和 get_next_line.h
(不包括 Makefile)。仅此而已。
代码
NAME = get_next_line
SRCS = get_next_line.c get_next_line_utils.c
OBJS = $(SRCS:.c=.o)
CC = gcc
CFLAGS = -Wall -Wextra -Werror
LIB_CRT = ar rcs
all: $(NAME)
$(NAME) : $(OBJS)
@$(LIB_CRT) $(NAME) $(OBJS)
%.o: %.c $(INCLUDE)
@$(CC) -c $(CFLAGS) -o $@ $<
clean:
@rm -f $(OBJS) a.out
fclean: clean
@rm -f $(NAME)
re : fclean all
错误信息
linker input file unused because linking not done
。我多次收到此错误。
当我 运行 犯错误时,我一直在 运行 关注这个错误。我遵循了另一个项目的另一个 Makefile,但无济于事。我也读了 this article and that 一本,但它们与我的问题无关。
感谢任何意见。
您的 makefile 似乎旨在构建一个名为“get_next_line”的程序,但这并不完全清楚,因为您实际上构建的是一个静态存档具有该名称(对于存档来说非常规)的文件。这就是 ar
实用程序的作用。使用 gcc 工具链和许多其他工具链,人们通常会使用相同的前端(在本例中为 gcc
)进行编译和链接。也就是说,
$(NAME) : $(OBJS)
$(CC) -o $(NAME) $(OBJS)
...或者,有点干燥...
$(NAME) : $(OBJS)
$(CC) -o $@ $^
不清楚您为什么会收到所报告的特定消息。它看起来像是来自链接器 ld
的消息,但我在生成文件中看不出有任何理由认为链接器会 运行。因此,我倾向于假设该消息与完全不同的事物相关联。可能您 运行ning make
在不同的工作目录中,因此使用不同的 makefile。或者它可能与 make
本身以外的其他命令相关联。或者,您的环境中可能有一个有影响力的变量集,它会改变您的 makefile 的含义。当您尝试 运行 存档时,您可能会收到该消息,就好像它是一个程序一样(尽管在那种情况下我不希望发生这种情况)。
我正在编译我为项目编写的 C 程序。
目标
正在编译 get_next_line.c
和 get_next_line_utils.c
。
结构
我的文件夹中有 3 个文件,get_next_line.c
、get_next_line_utils.c
和 get_next_line.h
(不包括 Makefile)。仅此而已。
代码
NAME = get_next_line
SRCS = get_next_line.c get_next_line_utils.c
OBJS = $(SRCS:.c=.o)
CC = gcc
CFLAGS = -Wall -Wextra -Werror
LIB_CRT = ar rcs
all: $(NAME)
$(NAME) : $(OBJS)
@$(LIB_CRT) $(NAME) $(OBJS)
%.o: %.c $(INCLUDE)
@$(CC) -c $(CFLAGS) -o $@ $<
clean:
@rm -f $(OBJS) a.out
fclean: clean
@rm -f $(NAME)
re : fclean all
错误信息
linker input file unused because linking not done
。我多次收到此错误。
当我 运行 犯错误时,我一直在 运行 关注这个错误。我遵循了另一个项目的另一个 Makefile,但无济于事。我也读了 this article and that 一本,但它们与我的问题无关。
感谢任何意见。
您的 makefile 似乎旨在构建一个名为“get_next_line”的程序,但这并不完全清楚,因为您实际上构建的是一个静态存档具有该名称(对于存档来说非常规)的文件。这就是 ar
实用程序的作用。使用 gcc 工具链和许多其他工具链,人们通常会使用相同的前端(在本例中为 gcc
)进行编译和链接。也就是说,
$(NAME) : $(OBJS)
$(CC) -o $(NAME) $(OBJS)
...或者,有点干燥...
$(NAME) : $(OBJS)
$(CC) -o $@ $^
不清楚您为什么会收到所报告的特定消息。它看起来像是来自链接器 ld
的消息,但我在生成文件中看不出有任何理由认为链接器会 运行。因此,我倾向于假设该消息与完全不同的事物相关联。可能您 运行ning make
在不同的工作目录中,因此使用不同的 makefile。或者它可能与 make
本身以外的其他命令相关联。或者,您的环境中可能有一个有影响力的变量集,它会改变您的 makefile 的含义。当您尝试 运行 存档时,您可能会收到该消息,就好像它是一个程序一样(尽管在那种情况下我不希望发生这种情况)。