2012-05-05 5 views
8

Estoy tratando de incluir un archivo de biblioteca llamada libmathematica.a en gcc por lo que se vincula en el ejemplo ejecutable .GCC no puede encontrar el archivo de cabecera en una librería incluida

que intente hacer esto con gcc main.c libmathematica.a -o example

Nota: Tengo que hacer esto con gcc, como ld no enlazará correctamente con las bibliotecas del sistema correctas

pero me sale: fatal error: mathematica.h: No such file or directory, que es impar porque mathematica.h está en la biblioteca.

puede ayudar?

Respuesta

11

Un archivo de cabecera no puede ser en la biblioteca. Se tiene que estar presente en un lugar determinado y hay que especificar que la ubicación con la bandera -I compilador:

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

Si el archivo de cabecera se encuentra en el directorio en el main.c es o en un subdirectorio, entonces asegúrese de que utiliza comillas y no corchetes en la directiva #include.

+0

Ohh ... Eso tiene sentido. ¡Gracias! –

1

El problema estaría en su archivo fuente. Si la mathica.h está en el sistema incluye el directorio, entonces usaría #include <mathematica.h> y si estuviera en algún directorio local, entonces usaría algo como #include "libs/mathematica.h".

+0

No sigo ... Ver main.c no es parte de mathematica.a, es un programa externo. Estoy intentando vincular mathematica al ejemplo para ejecutar código desde mathematica –

+0

¿Dónde se encuentra el archivo mathematica.h? haga algo como find/-name "* mathematica.h". Si está en la parte principal incluye como/usr/include, entonces puede usar #include de lo contrario, debe colocarse en el mismo directorio que su main.c y usar #include "mathematica.h". –

+0

Lo incluí en la biblioteca, lo que estaba mal. –

1

Trate de añadir a la llamada gcc - una opción como -I/Full/ruta/a/El/Directorio/Donde/la/lo desea/cabecera/reside

Por ejemplo: gcc -I/usr/include/mathematica -lmathematica -o ejemplo main.c

Cuestiones relacionadas