Makefile中的選項 I 和 L

2021-06-23 00:39:14 字數 1337 閱讀 2642

makefile中-l 和 -i 編譯開關

lib        =            -l/usr/x11/lib

include=          -i/usr/x11/include/x11

libs      =          -lx11 -lc -lm

這個 -l 和 -i 開關告訴編譯器和鏈結分別在**找到 library 和 

include 檔案。在這個例子裡, x11 庫應該在 /usr/x11/lib 目錄,且 

x11 包含檔案應該在 /usr/x11/include/x11 目錄裡。

書上是這樣解釋的:

-i dir 當包含其他 makefile 檔案時,可利用該選項指定搜尋目錄

讀了好多遍都沒有懂,結果使我浮想聯翩,最後在老師我指導下明白了:

指定目錄下(如tmp)的makefile(或者其他名字)在當前makefile中要有

這樣一句:include makefile,然後makefile -i tmp時就會在在tmp下找

makefile並把裡邊的內容新增到當前目錄下的makefile中。

當前目錄下的makefile:

obj=main.o fun1.o fun2.o  

cc=gcc  

cflags=-ddbg  

hello: $(obj)  

gcc $^ -o hello  

include makefile  

tmp目錄下的makefile:

clean:  

rm *.o hello  

install:  

cp hello /usr/bin  

uninstall:  

rm /usr/bin/hello  

在當前目錄下執行:

[root@localhost makefile]# make clean  

makefile:8: makefile: 沒有那個檔案或目錄  

make: *** 沒有規則可以建立目標「makefile」。 停止。  

但是加上這個-i tmp後:

[root@localhost makefile]# make clean -i tmp  

rm *.o hello  

rm: 無法刪除"*.o": 沒有那個檔案或目錄  

rm: 無法刪除"hello": 沒有那個檔案或目錄  

make: *** [clean] 錯誤 1  

[root@localhost makefile]#   

就可以了,是因為它把這個/tmp/makefile中的內容拷貝到當前目錄下的

makefile中了。

gcc和Makefile的 D U選項

對於gcc編譯器,有如下選項 d macro string,等價於在標頭檔案中定義 define macro string。例如 d true true,等價於 define true true d macro,等價於在標頭檔案中定義 define macro 1,實際上也達到了定義 define ...

xfsdump的選項 L和 M

目錄話不多說直接明了 看完下面的結論,還想繼續往下仔細看的請保持不被打擾,戴上耳機,家門口 埋雷 哦!xfsdump是針對xfs檔案系統的!l和 m就是標記用來方便查詢以及查詢時確認備份資料的資訊是否是自己需要的。命令格式 xfsdump l 0 l sdc1 bak m sdc1 bak f 全量...

gcc的引數 I和 L 的用法

當頭檔案與gcc不在同一目錄下要用 i dir引數,它是指頭檔案所在的目錄。而新增庫檔案時需要 l dir引數,它指定庫檔案所在的目錄。1.i dir 使用 include gcc預設目錄shi usr include 如果使用 include則找不到my.h檔案,因此要通過 i dir 引數來指定...