GCC无法在包含的库中找到头文件

16

我正试图在gcc中包含一个名为libmathematica.a的库文件,以便它能够链接到可执行文件example

我尝试使用gcc main.c libmathematica.a -o example来实现这个目标。

注意:由于ld无法正确地链接到正确的系统库,所以我必须使用gcc。

但是我遇到了一个错误:fatal error: mathematica.h: No such file or directory,这很奇怪,因为mathematica.h在库中。

你可以帮忙解决吗?


3个回答

22

头文件不能 在库中。它必须出现在某个特定位置,并且您需要使用 -I 编译器标志指定该位置:

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

如果头文件在main.c所在的目录或其子目录中,请确保在#include指令中使用引号而不是尖括号。


5
问题可能出现在您的源文件中。如果mathematica.h在系统包含目录中,则应使用#include <mathematica.h>,如果它在某个本地目录中,则应使用类似#include "libs/mathematica.h"的内容。

我不明白...看起来main.c并不是mathematica.a的一部分,而是一个外部程序。我正在尝试将mathematica链接到示例中,以便从mathematica运行代码。 - Corwin Mcknight
mathematica.h文件位于哪里?可以使用类似find / -name "*mathematica.h"的命令查找。如果它在主要的包含目录中,例如/usr/include,那么您可以使用#include <mathematica.h>。否则,它应该放置在与您的main.c相同的目录中,并使用#include "mathematica.h"。 - Timothy Swartz

1

尝试在 gcc 调用中添加一个选项,例如 -I/完整/路径/到/所需/头文件/所在的/目录

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接