我试图编译一个程序(称为es3),但当我从终端写入时:

gcc es3.c -o es3

出现以下消息:

/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

我能做些什么呢?

推荐答案

这意味着es3.c没有定义main函数,您正试图用它创建一个可执行文件.可执行文件需要有一个入口点,因此链接器会抱怨.

要仅编译为对象文件,请使用-c选项:

gcc es3.c -c
gcc es3.o main.c -o es3

上述代码将es3.c编译为目标文件,然后编译将包含main函数的文件main.c,并且链接器将es3.omain.o合并为名为es3的可执行文件.

C++相关问答推荐

FFmpeg不检测比特流过滤器参数

intellisense不工作,甚至已经下载了c/c++扩展

标准的C17标准是用括号将参数包装在函数声明中吗

为什么双重打印与C中的float具有不同的大小时具有相同的值?

核心转储文件中出现奇怪的大小变化

如何在C中通过套接字自定义数据类型读取原始变量?

在我的代码中,我需要在哪里编写输出函数?

用gcc-msse 2编译的C程序包含AVX 1指令

I2C外设在单次交易后出现故障

我在C程序的Flex/Bison中遇到语法错误

循环中的静态变量与块中的变量和循环

从整型转换为浮点型可能会改变其值.

浮点正零何时不全为零?

如何解释数组中的*(ptr)和*(ptr+2)?

解密Chrome加密密钥

关于不同C编译器中的__attribute__支持

从系统派生线程调用CRT

指向返回 struct 成员的指针,安全吗?

我正在使用 klib 库 我可以使用 (khash) KHASH_SET_INIT_INT64() 负值作为键.因为我在头文件中看到它使用 unsigned long int

文件指针引起的C程序分段错误