2012-05-05 44 views
8

我想包括在海湾合作委员会评为libmathematica.a一个库文件,所以它得到可执行例如链接。GCC找不到头文件中包含的库

我试图用gcc main.c libmathematica.a -o example

注意做到这一点:我用gcc要做到这一点,因为LD不会用正确的系统库

正确链接,但我得到:fatal error: mathematica.h: No such file or directory,这很奇怪,因为mathematica.h在库中。

你能帮忙吗?

回答

11

库中的头文件不能为。它必须是出现在某个位置,你必须指定与-I编译器标志的位置:如果头文件是在该main.c是或子目录中,那么可以肯定的是,目录

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

您在#include指令中使用引号而不是尖括号。

+0

哦......这很有道理。谢谢! –

1

这个问题将在您的源文件中。如果mathematica.h位于系统包含目录中,那么您将使用#include <mathematica.h>,如果它位于某个本地目录中,那么您将使用类似#include "libs/mathematica.h"之类的内容。

+0

我不关注...请参阅main.c不是mathematica.a的一部分,它是一个外部程序。我试图将mathematica连接到示例以运行mathematica代码 –

+0

mathematica.h文件位于何处?做一些像find/-name“* mathematica.h”。如果它位于/ usr/include等主要包含文件中,则可以使用#include ,否则它应该放在与main.c相同的目录中,并使用#include“mathematica.h”。 –

+0

我在图书馆包括它,这是错误的。 –

1

尝试增加海合会呼吁 - 像 -I /全/路径/要/ /目录/在哪里/的/所需/头/驻留

例如一个选项: 的gcc -I/USR/include/mathematica -lmathematica -o example main.c