Makefile 選項 CFLAGS 、LDFLAGS 、LIBS


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將會設置這個選項。鏈接時會有這個參數,編譯出來的可運行程序的庫文件搜索路徑就得到擴展了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM