2012-05-05 3 views
8

Ich versuche, eine Bibliothek Datei mit dem Namen libmathematica.a in gcc zu finden, so dass es in dem ausführbaren Beispiel verknüpft wird.GCC nicht in der Lage zu Header-Datei in einer Bibliothek enthielt

ich versuche, dies zu tun mit gcc main.c libmathematica.a -o example

Anmerkung: Ich habe dies mit gcc zu tun, als ld es nicht richtig mit den richtigen Systembibliotheken

Aber ich verbinden wird: fatal error: mathematica.h: No such file or directory, was ist seltsam, weil mathematica.h in der Bibliothek ist.

Können Sie helfen?

Antwort

11

In der Bibliothek darf eine Header-Datei nicht sein. Es hat an einem bestimmten Ort anwesend zu sein und Sie müssen diese Position mit dem -I Compiler-Flag angeben:

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

Wenn die Header-Datei in dem Verzeichnis, in dem die main.c ist oder in einem Unterverzeichnis, dann sicher sein, dass Sie verwenden Anführungszeichen und keine spitzen Klammern in der #include Direktive.

+0

Ohh ... Das macht Sinn. Vielen Dank! –

1

Das Problem wäre in Ihrer Quelldatei. Wenn die Mathematica.h im System Verzeichnis enthält, dann würden Sie #include <mathematica.h> verwenden und wenn es in einem lokalen Verzeichnis wäre, dann würden Sie etwas wie #include "libs/mathematica.h" verwenden.

+0

Ich folge nicht ... Siehe main.c ist nicht Teil von Mathematica.a, es ist ein externes Programm. Ich versuche, Mathematica mit Beispiel zu verknüpfen, um Code von Mathematica –

+0

ausführen Wo befindet sich die Mathematica.h-Datei? mache etwas wie find/-name "* mathematica.h". Wenn es im Wesentlichen includes wie/usr/include ist, dann können Sie #include verwenden, andernfalls sollte es im selben Verzeichnis wie Ihr main.c platziert werden und #include "mathematica.h" verwenden. –

+0

Ich habe es _in_ in die Bibliothek aufgenommen, was falsch war. –

1

Versuchen Sie, die gcc Gespräch hinzugefügt - eine Option, wie -I/Full/path/to/The/Verzeichnis/Wo/das/gewünschte/header/residiert

Zum Beispiel: gcc -I/usr/include/mathematica -lmathematica -o Beispiel main.c