編譯configure常用參數詳解


./configure常用參數解釋:

具體通過–help來查看具體支持什么功能。有時候編譯不通過,可能依賴一些庫,如果這些庫關聯的功能我們不需要,可以通過---disable-*lib來取消相關庫的編譯。

--disable-FEATURE
  一些軟件包可以選擇這個選項來提供為大型選項的編譯時配置,例如使用Kerberos認證系統或者一個實驗性的編譯器最優配置.如果默認是提供這些特性,可以使用'--disable-FEATURE'來禁用它,這里'FEATURE'是特性的名字.例如:
$ ./configure --disable-gui

-enable-FEATURE[=ARG]
  相反的,一些軟件包可能提供了一些默認被禁止的特性,可以使用'--enable-FEATURE'來起用它.這里'FEATURE'是特性的名字.一個特性可能會接受一個可選的參數.例如:
$ ./configure --enable-buffers=128
`--enable-FEATURE=no'與上面提到的'--disable-FEATURE'是同義的.

--with-PACKAGE[=ARG]
  在自由軟件社區里,有使用已有軟件包和庫的優秀傳統.當用'configure'來配置一個源碼樹時,可以提供其他已經安裝的軟件包的信息.例如,倚賴於Tcl和Tk的BLT器件工具包.要配置BLT,可能需要給'configure'提供一些關於我們把Tcl和Tk裝的何處的信息:
$ ./configure --with-tcl=/usr/local --with-tk=/usr/local
'--with-PACKAGE=no'與下面將提到的'--without-PACKAGE'是同義的.

--without-PACKAGE
  有時候你可能不想讓你的軟件包與系統已有的軟件包交互.例如,你可能不想讓你的新編譯器使用GNU ld.通過使用這個選項可以做到這一點:
$ ./configure --without-gnu-ld

--enable-static:編譯靜態庫

--enable-shared:編譯動態庫

--with-pic:僅使用PIC編譯,當編譯出來的庫被其他庫調用的時候,其他庫使用PIC編譯,則依賴的庫也需要加PIC

–prefix=/home/carl:指定安裝位置,如果安裝位置不指定,默認路徑為/usr/local下的bin、lib等文件夾

--exec-prefix=EPREFIX與'--prefix'選項類似,但是他是用來設置結構倚賴的文件的安裝位置.編譯好的'emacs'二進制文件就是這樣一個問件.如果沒有設置這個選項的話,默認使用的選項值將被設為和'--prefix'選項值一樣.

--libdir=DIR,指定庫文件的安裝位置.

--includedir=DIR,指定C頭文件的安裝位置.其他語言如C++的頭文件也可以使用此選項.

--build: 執行代碼編譯的主機,正常的話就是你的主機系統。這個參數一般由config.guess來猜就可以。當然自己指定也可以。可以默認不寫,默認為當前正在使用的主機,查看本機使用的可以在configure目錄下執行./config.guess

--host:就是你編譯好的程序可以運行的機器,如果沒有指定,將會運行`config.guess’來檢測。

--target: 這個選項只有在建立交叉編譯環境的時候用到,正常編譯和交叉編譯都不會用到。他用build主機上的編譯器,編譯一個新的編譯器(binutils, gcc,gdb等),這個新的編譯器將來編譯出來的其他程序將運行在target指定的系統上。如果不編譯新的編譯器,這個參數可以不填,或者與 host的參數一致。比如你build的機器是x86,想運行的host機器是arm,程序可以處理的程序target是mips

下邊的選項需要卸載configure前邊,比如CFLAGS="-g -O0" ./configure

CC:指定編譯工具鏈的名字,指定GCC 交叉編譯器命令,如果配置了,則使用CC配置的編譯器,如果不配置則默認為host對應的GCC工具。如配置了 --host=arm-xilinx-linux-gnueabi,則默認CC的編譯器為 arm-xilinx-linux-gnueabi-gcc,這個參數如無特殊指定,可以忽略不寫。

CFLAGS:指定頭文件(.h文件)的路徑,如:CFLAGS=-I/usr/include -I/path/include

CFLAGS="-g -O0" ./configure添加-O0級別的調試信息

LDFLAGS:gcc 等編譯器會用到的一些優化參數,也可以在里面指定庫文件的位置。用法:LDFLAGS=-L/usr/lib -L/path/to/your/lib

LIBS:告訴鏈接器要鏈接哪些庫文件,如LIBS = -lpthread -liconv

其他更詳細的參數可以參考:https://www.xuebuyuan.com/3196393.html

1,為什么自己編譯好的64位庫沒有安裝到/usr/lib64目錄下

方法一:cp /usr/lib/libXXX.so /usr/lib64/

方法二:./configure --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64
————————————————
版權聲明:本文為CSDN博主「knowledgebao」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/knowledgebao/article/details/84657113


免責聲明!

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



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