BRHSM
BRHSM

Reputation: 884

header.h: No such file or directory even though source and header are in same directory

I have made a header and a source but I don't know how to link them up. I looked it up on the web but the commands provided didn't work (or I wouldn't be here :) ).

To compile it (if you use GCC):

Header:

$ gcc -c whatever.h -o whatever.o

Source:

$ gcc -c sample.c -o sample.o

To link the files to create an executable file:

$ gcc sample.o whatever.o -o sample

What did I do wrong. I am using geany for writing (compile error is here) but the commands are executed on a terminal in the same directory. can anybody give me the build commands for geany so whenever I want to include a header I can just compile and run?

Upvotes: 5

Views: 48288

Answers (3)

Shiv Buyya
Shiv Buyya

Reputation: 4130

if you include header file by:

#include <header.h>

it will give this error.

Instead you can write as given below:

#include "header.h"

Upvotes: 2

Sourav Ghosh
Sourav Ghosh

Reputation: 134326

Thumb Rule:

  • header files [.h] are for #includeing
  • source files [.c] are for compiling and linking together to create the executable.

Once you've #included your header file in a .c file, there's no need to compile the header file and produce an object file.

FYI, you can check the effect of #include-ing the header file by running

gcc -E sample.c

and hope you'll understand why you need not compile and link the header file separately.


EDIT:

if you have a sample.c and whatever.h, to produce and run the binary, simply do

  • #include "whatever.h" in the top of sample.c

  • gcc -o sample sample.c

  • ./sample

Upvotes: 4

Gopi
Gopi

Reputation: 19864

Good and the right way would be to

sample.c

#include "header.h"

and compile

gcc sample.c -o ob

Upvotes: 10

Related Questions