Skip to content
Sign upLog in
← Back to Community

How do I go about to fix "undefined reference to 'main'"?

Profile icon
DiegoGuajardo2

This is my first time using C and replit and I don't know how to fix this. Thank you in advance!

Voters
Profile icon
rusirufernando
Profile icon
DiegoGuajardo2
Comments
hotnewtop
Profile icon
Coder100

C only runs the main function. Other functions must be called.

Here ya go:

#include <stdio.h> int hello(); int main() { hello(); return 0; } int hello() { printf("Hello World! My name is Diego."); }

don't forget to write safe C!

Profile icon
MocaCDeveloper

In low level languages like C, the compiler needs what is called an "entry point".

In C, C++, Go, Rust etc, this entry point is called the "main function". In C/C++, you declare the main function as either an Integer, or a Void. In other languages like Rust, Go, Java, you declare with either declaring it as a static void(Java), or by putting func(Golang) in front of it, or whatever syntax the language supports for a function declaration.

Low-level languages, or should I say, compiled programming languages require a entry-point function(the main function) to compile. The main function is ALL the compiler looks it, and is ALL the compiler needs to successfully run the program.

If the main function is not found, compilation will fail, and the compiler will throw an error. If you know assembly, or have some basic common knowledge over the assembly language(whichever version you write), you'd know why a compiled programming language needs to have an entry-point function(called main).

If you don't know, here is a simple assembly program:

section .text global _start %define sys_call int 0x80 _start: mov eax, 1 mov ebx, 0 sys_call

_start indicates the "main" function in a compiled programming language. Whatever that language compiles to(some version of assembly), you can expect to see _start, main or some indication that this is the entry point of the program.

Nothing else runs but what is within the "main" function.

Profile icon
InvisibleOne

I believe it needs to be int main() so that you have a "main" object

Profile icon
DiegoGuajardo2

@InvisibleOne
Thanks. When I switched it to main, it doesn't seem to find main.c

Is there a way for me to keep the file as hello.c and run it?