Alright, I\'ve been trying to work with this for the longest time, and I simply can\'t seem to get it to work right. I have three files, main.c
, hello_world.c
gcc main.c hello_world.c -o main
Also, always use header guards:
#ifndef HELLO_WORLD_H
#define HELLO_WORLD_H
/* header file contents go here */
#endif /* HELLO_WORLD_H */
You should link object file compled from your second .c file hello_world.c with your main.o
try this
cc -c main.c
cc -c hello_world.c
cc *.o -o hello_world
You are not including hello_world.c in compilation.
gcc hello_world.c main.c -o main
Ya it seems you have forgotten to link hello_world.c. I will be gcc hello_world.c main.c -o main. If the number of files are less we can use this approach but in larger projects better to use Make files or some compilation scripts.
You are not linking against hello_world.c.
An easy way to do this is to run this compilation command:
cc -o main main.c hello_world.c
More complicated projects often use build scripts or make files that separate the compilation and linking commands, but the above command (combining both steps) should do fine for small projects.