gcc是如何找到標頭檔案 庫檔案的

2021-04-25 22:28:44 字數 873 閱讀 6113

gcc等編譯器如何找到標頭檔案、庫檔案的

寫了乙個hello world程式

// hello.cpp

#include

using namespace std;

int main()

然後敲入指令g++ hello.cpp

我並沒有指定iostream標頭檔案及其庫檔案在哪,g++是怎麼找到這些檔案的呢?

如果沒有在編譯引數中指定,編譯器會去預設的地方去找。

如/usr/include,/lib等!

這裡預設的地方是不是就是環境變數中的

cflags

ld_library_path

這兩個變數來找標頭檔案和庫檔案嗎,可是我把cflags設定為空,再g++ hello.cpp,還是能夠編譯成功。

是不是以上變數是用來新增額外的。

/usr/include /lib /usr/lib 這些路徑不用引數,也不用環境變數,gcc 自動找,也許是在 spec 裡的。

如果你的makefile裡面沒有指定搜尋路徑,那麼make就在當前目錄和資料夾下查詢檔案。所以make沒有找到**包含的庫檔案。

有兩種方法指定搜尋路徑:

1. 使用特殊變數"vpath"。如果定義了這個變數,那麼,make就會在當當前目錄找不到的情況下,到所指定的目錄中去找尋檔案了。

使用方法是

vpath=src:mydoc

make就會搜尋上面的兩個資料夾。不同的資料夾用:隔開。

2. 用vpath語句。

vpath %.c src:mydoc

表示在這兩個資料夾中搜尋.c的檔案。

cocoapod整合失敗,無法找到標頭檔案的解決辦法

在終端更新pod的時候,提示警告 target overrides theother ldflagsbuild setting defined in pods target support files pods pods.debug.xcconfig this can lead to problem...

gcc的標頭檔案和共享庫

gcc在進行編譯預處理時,要在工具鏈預設的一些頭檔案目錄中搜尋標頭檔案,這些目錄一般包括 usr include 和 usr local include linux的系統標頭檔案一般儲存在 usr include 目錄下,自己安裝的軟體的標頭檔案一般存放在 usr local include目錄下 ...

gcc和 的包含標頭檔案庫檔案方法

l引數就是用來指定程式要鏈結的庫,l引數緊接著就是庫名,那麼庫名跟真正的庫檔名有什麼關係呢?就拿數學庫來說,他的庫名是m,他的庫檔名是libm.so,很容易看出,把庫檔名的頭lib和尾.so去掉就是庫名了。好了現在我們知道怎麼得到庫名,當我們自已要用到乙個第三方提供的庫名字libtest.so,那麼...