【问题标题】:GCC unable to find header file in a included libraryGCC 无法在包含的库中找到头文件
【发布时间】:2012-05-05 17:41:49
【问题描述】:

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

我尝试使用gcc main.c libmathematica.a -o example 来做到这一点

注意:我必须使用 gcc 执行此操作,因为 ld 无法将其正确链接到正确的系统库

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

你能帮忙吗?

【问题讨论】:

标签: c gcc libraries


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我不关注...请参阅 main.c 不是 mathematica.a 的一部分,它是一个外部程序。我正在尝试将mathematica 链接到示例以运行mathematica 中的代码
    • mathematica.h 文件在哪里?做一些类似 find / -name "*mathematica.h" 的事情。如果它位于 /usr/include 等主目录中,则可以使用 #include ,否则应将其放在与 main.c 相同的目录中并使用 #include "mathematica.h"。跨度>
    【解决方案3】:

    尝试添加到 gcc 调用 - 类似的选项 -I/Full/Path/To/The/Directory/Where/the/desired/header/resides

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

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多