c - "Undefined reference to main"与 main 在单独的脚本/规则中

标签 c linux gcc makefile

这可能是 makefile error: undefined reference to main 的复制品或 Undefined reference in main Makefile或其他几个。 crc64 和 getWord 都是 mainProg 的支持文件,其中包含我的主要功能。当我尝试运行我的 make 文件时,我收到以下关于 crc64.o 规则的编译错误。在 c 文件中,我有这篇文章中列出的 include 语句和头文件 Creating your own header file in C所以我不应该有与将 header 链接到正文相关的链接错误。

错误: gcc -g -Wall -std=c99 crc64.o -o crc64 /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o:在函数“_start”中: (.text+0x20): 对“main”的 undefined reference collect2:错误:ld 返回 1 退出状态
生成文件

CC=gcc
COPTS=-g -Wall -std=c99
ALL=crc64 getWord mainProg
all: $(ALL)

crc64: crc64.o
   $(CC) $(COPTS) $^ -o $@
getWord: getWord.o
   $(CC) $(COPTS) $^ -o $@
mainProg: getWord.o crc64.o mainProg.o 
   $(CC) $(COPTS) $^ -o $@
crc64.o: crc64.c crc64.h
getWord.o: getWord.c getWord.h
mainProg.o: mainProg.c getWord.h crc64.h
.c.o:
   $(CC) -c $(COPTS) $<

最佳答案

您正在编译 crc64getWord 就好像它们是可执行文件一样。因此,他们需要一个 main 函数。

只需删除这两个目标即可。你不需要它们。

另请参阅@mafso 的评论:您应该使用 COPTS 中的 CFLAGS,以确保相关的 implicit rules选择相同的选项。

关于c - "Undefined reference to main"与 main 在单独的脚本/规则中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954255/

相关文章:

linux - 虚拟环境创建错误

linux - 如何从 Linux 中的 GUI 应用程序中提取文本内容?

gcc - 如何使用 Intel 语法内联汇编在 GCC 中设置变量?

java - 从不同的Android项目调用c程序

c++ - 在 C 和 C++ 文件之间共享一个全局变量

c - "open_file:"在c中的含义?

c - 简单 C 代码中的意外输出

linux - 如何找到可用于特定虚拟到物理地址映射的最大页面大小?

c++ - 如何更新到 C++11?

c - gcc 弱属性不一致行为