簡體   English   中英

為什么我的include指令在gcc中不起作用?

[英]Why isn't my include directive working in gcc?

我正在研究一些使用Open Dynamics Engine的代碼。 我以前在Windows上使用過此代碼,但是現在我要轉向unix,這樣我就可以獲得在unix環境下使用C的經驗,因此我不再依賴Visual Studio。 我將所有內容下載到我的主目錄,使用包含的makefile進行構建並嘗試了一個演示。 一切都很好。 我用自己的測試在其中創建了目錄和測試文件。 對於我的#include,我指定了:

#include ".././ode-0.11.1/include/ode/ode.h"
#include ".././ode-0.11.1/include/drawstuff/drawstuff.h"

由於該庫僅位於我的主目錄中,而不位於標准位置。 我去編譯我的代碼,但是:

.././ode-0.11.1/include/ode/ode.h:28:27: fatal error: ode/odeconfig.h: No such 
file or directory

查看ode.h,它包括一堆其他頭文件,它們都位於同一目錄中,但是使用方括號語法而不是引號。 我猜這與為什么gcc找不到其他標頭有關。 我已經看過了makefile,但是對了解我的問題的了解還不夠。 為什么我的編譯不起作用? 詳細/詳盡的答案將不勝感激,因為我想學習這一切的工作原理(鏈接,包含,制作等)。

編輯:所以我想出了如何正確地包含標題,現在我需要弄清楚如何鏈接到函數的庫定義...

Edit2:仍然不知道如何鏈接到我的代碼。 將已編譯的靜態庫轉儲到“〜/ ode-0.11.1 / ode / src / .libs”和“〜/ ode-0.11.1 / drawstuff / src / .libs”中以用於繪圖功能。

Edit3:我想我明白了。 我沒有正確使用-l選項,似乎必須在引用要鏈接到的庫中的函數的文件之后執行。

您需要在編譯行中設置包含目錄

例如

gcc -I.././ode-0.11.1/include

甚至更好的是絕對路徑

然后在代碼中包括

#include "ode/ode.h"
#include "drawstuff/drawstuff.h"

因此,將從同一目錄訪問ode.h中包含的所有文件。 您可以找到示例ode / odeconfig.h,因為ode是-I參數中include路徑的子目錄。

鏈接是類似的,但是兩部分都是在命令行上完成的。這兩部分是由-l變量指定的文件,而lib是通過-L參數指定的目錄。 另外,如果該庫是libode.dylib,那么您只需輸入名稱,例如ode。

所以命令行是

gcc -lode -L.././ode-0.11.1/lib

轉到目錄ode-0.11.1,這將是項目的主目錄。

因此,包含文件屬於ode-0.11.1 / include目錄,在這種情況下,您的來源應類似於

myprog.c中

#include "ode/ode.h"
#include "drawstuff/drawstuff.h"

編譯命令應為以下行:

gcc -I./include/ode -I./include/drawstuff  myprog.c -o myprog

在目錄ode-0.11.1 / include中執行的命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM