CFLAGS 表示用於C編譯器的選項
CXXFLAGS 表示用於C++編譯器的選項
這兩個變量實際上涵蓋了編譯和匯編的兩個步驟
CFLAGS:指定頭文件(.h)的路徑,如:CFLAGS=-I/usr/include -I/path/include 。
相同地,安裝一個包時會在安裝路徑下建立一個include文件夾,當安裝過程中出現故障時,試着把曾經安裝的包的include文件夾增加到該變量中來。
LDFLAGS:gcc 等編譯器會用到的一些優化參數,也能夠在里面指定庫文件的位置。
使用方法:LDFLAGS=-L/usr/lib -L/path/to/your/lib。每安裝一個包都差點兒一定的會在安裝文件夾里建立一個lib文件夾。假設明明安裝了某個包,而安裝還有一個包時,它愣是說找不到,能夠抒那個包的lib路徑增加的LDFALGS中試一下。
LIBS:告訴鏈接器要鏈接哪些庫文件。如LIBS = -lpthread -liconv
簡單地說,LDFLAGS是告訴鏈接器從哪里尋找庫文件,而LIBS是告訴鏈接器要鏈接哪些庫文件。
有時候LDFLAGS指定-L盡管能讓鏈接器找到庫進行鏈接。可是運行時鏈接器卻找不到這個庫。假設要讓軟件運行時庫文件的路徑也得到擴展,那么我們須要增加這兩個庫給”-Wl,R”:
LDFLAGS = -L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib
假設在運行./configure曾經環境變量設置export LDFLAGS=”-L/var/xxx/lib -L/opt/mysql/lib -Wl,R/var/xxx/lib -Wl,R/opt/mysql/lib” ,注意環境變量設置等號兩邊不能夠有空格,並且要加上引號(shell的使用方法)。那么運行configure以后。Makefile將會設置這個選項。鏈接時會有這個參數,編譯出來的可運行程序的庫文件搜索路徑就得到擴展了。