Corwin Mcknight
Corwin Mcknight

Reputation: 322

GCC unable to find header file in a included library

I am trying to include a library file named libmathematica.a in gcc so it gets linked in the executable example.

I attempt to do this with gcc main.c libmathematica.a -o example

Note: I have to do this with gcc, as ld won't link it properly with the correct system libraries

But I get: fatal error: mathematica.h: No such file or directory ,which is odd because mathematica.h is in the library.

Can you help?

Upvotes: 17

Views: 42501

Answers (3)

Timothy Swartz
Timothy Swartz

Reputation: 194

The issue would be in your source file. If the mathematica.h is in the system includes directory then you would use #include <mathematica.h> and if it was in some local directory then you would use something like #include "libs/mathematica.h".

Upvotes: 5

Hristo Iliev
Hristo Iliev

Reputation: 74385

A header file cannot be in the library. It has to be present at a certain location and you have to specify that location with the -I compiler flag:

gcc -I/path/to/mathematica/include main.c libmathematica.a -o example

If the header file is in the directory where the main.c is or in a subdirectory, then be sure that you use quotes and not angle brackets in the #include directive.

Upvotes: 23

Yotam
Yotam

Reputation: 888

Try adding to the gcc call - an option like -I/Full/Path/To/The/Directory/Where/the/desired/header/resides

For example: gcc -I/usr/include/mathematica -lmathematica -o example main.c

Upvotes: 1

Related Questions