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,那麼...