2012-05-05 87 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