编译尝试给出crt1.o/';启动'/未定义对'的引用;主要'/退出状态消息

编译尝试给出crt1.o/';启动'/未定义对'的引用;主要'/退出状态消息,c,C,我在写一本书:C中的TCP/IP套接字及其网站代码 我正在尝试基于这些文件构建客户机和服务器。我的品牌有很多优点 与无法从DieWithMessage.c中查找函数相关的错误 这是: #include <stdio.h> #include <stdlib.h> #include "Practical.h" void DieWithUserMessage(const char *msg, const char *detail) { fputs(msg, s

我在写一本书:C中的TCP/IP套接字及其网站代码

我正在尝试基于这些文件构建客户机和服务器。我的品牌有很多优点 与无法从DieWithMessage.c中查找函数相关的错误

这是:

  #include <stdio.h>
  #include <stdlib.h>
  #include "Practical.h"

void DieWithUserMessage(const char *msg, const char *detail) {
  fputs(msg, stderr);
  fputs(": ", stderr);
  fputs(detail, stderr);
  fputc('\n', stderr);
  exit(1);
} 

void DieWithSystemMessage(const char *msg) {
  perror(msg);
  exit(1);
}
#包括
#包括
#包括“实用的.h”
void DieWithUserMessage(const char*msg,const char*detail){
FPUT(味精、标准物质);
FPUT(“:”,标准);
FPUT(详图,标准);
fputc('\n',stderr);
出口(1);
} 
void DieWithSystemMessage(const char*msg){
佩罗尔(味精);
出口(1);
}
当我不使用message.c时,我得到以下错误:

/usr/lib/i386 linux gnu/gcc/i686 linux gnu/4.5.2/../../../../../crt1.o:在函数
\u start'中:
(.text+0x18):未定义对
main'的引用 collect2:ld返回了1个退出状态

我如何自己编译它,以便在使用makefile时停止错误的发生


谢谢您的帮助。

如果要尝试链接/运行C代码,您的C代码需要一个
main
函数。这是标准下托管的C应用程序的要求

那个错误信息表明出了什么问题。C运行时/启动代码(CRT)有一个入口点
start
,它设置环境,然后调用您的
main
。由于您没有提供
main
,它会抱怨

如果您只想生成一个对象文件,以便以后与
main
链接(请参阅,以获取该过程的一个描述),请使用以下方法:

gcc -c -o DieWithMessage.o DieWithMessage.c
-c
是“编译但不链接”标志)。随后,您可以使用以下内容将其与主程序链接(尽管还有其他选项):

如果希望占位符
main
在以后用真实占位符更新,可以将以下内容添加到代码中:

int main (void) { return 0; }

如果要尝试链接/运行C代码,它需要一个
main
函数。这是标准下托管的C应用程序的要求

那个错误信息表明出了什么问题。C运行时/启动代码(CRT)有一个入口点
start
,它设置环境,然后调用您的
main
。由于您没有提供
main
,它会抱怨

如果您只想生成一个对象文件,以便以后与
main
链接(请参阅,以获取该过程的一个描述),请使用以下方法:

gcc -c -o DieWithMessage.o DieWithMessage.c
-c
是“编译但不链接”标志)。随后,您可以使用以下内容将其与主程序链接(尽管还有其他选项):

如果希望占位符
main
在以后用真实占位符更新,可以将以下内容添加到代码中:

int main (void) { return 0; }