2012-01-19 33 views
4

一個簡單的問題。我在示例Makefile中找到了「DLDFLAGS」和「LDFLAGS」。使用的編譯器是gcc。看起來它們都用於連接器。我想知道他們之間有什麼區別。DLDFLAGS和LDFLAGS有什麼區別

+0

這可能是對於動態鏈接的標誌,我猜。我無法在網上找到確切的信息。你能告訴我們「DLDFLAGS」的價值是什麼? –

回答

7

LDFLAGS通常設置爲包含傳遞給鏈接器的選項(因此可能包含所需的庫)。與CFLAGS一起,這些通常被設置爲開發者環境變量的一部分,並且make將知道它們,因此將主動查看它們是否被設置並將它們傳遞給編譯器。

例如,如果我在我的環境設置CFLAGS-O2 -Wall,那麼如果我沒有Makefile中鍵入make hello,使會自動調用編譯器爲gcc -O2 -Wall hello.c -o hello.o。然後它會以類似的方式調用鏈接器,將LDFLAGS中的標誌添加到命令行中。

Makefiles可以明確覆蓋LDFLAGSCFLAGS

DLDFLAGS另一方面不是一個衆所周知的/定義的變量,所以它可能是特定於該特定的Makefile。您必須閱讀Makefile以瞭解它的使用方式。例如,如果設置了LDFLAGS,則可以定義要使用的鏈接器標誌 - 讀取Makefile以確認。

0

是不是DLDFLAGS只是一個預編譯器標誌,定義名爲「LDFLAGS」的宏?

從gcc手冊:

-D名

Predefine name as a macro, with definition 1