编译尝试给出crt1.o/';启动'/未定义对'的引用;主要'/退出状态消息
我在写一本书:C中的TCP/IP套接字及其网站代码 我正在尝试基于这些文件构建客户机和服务器。我的品牌有很多优点 与无法从DieWithMessage.c中查找函数相关的错误 这是:编译尝试给出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
#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; }