GCC unable to find header file in a included library

29,097

Solution 1

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.

Solution 2

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".

Solution 3

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

Share:
29,097
Corwin Mcknight
Author by

Corwin Mcknight

Updated on May 06, 2020

Comments

  • Corwin Mcknight
    Corwin Mcknight about 4 years

    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?