日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

configure - 配置源代码树

發布時間:2025/7/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 configure - 配置源代码树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

configure腳本配置Apache的源代碼樹并且將其安裝到指定的平臺上。豐富的選項允許你根據自己的特定狀況和特定需求對Apache進行定制。

這個腳本位于源代碼樹的根目錄下,并且只能用于類Unix操作系統。要了解其他平臺的信息,參見:針對特定平臺的說明文檔。

語法

你必須在源代碼樹的根目錄下調用configure腳本,語法如下:

./configure [OPTION]... [VAR=VALUE]...

若要指定環境變量(比如:CC, CFLAGS ...),請使用 VAR=VALUE 的格式。下面有一些有用的環境變量說明。

選項

  • 配置選項
  • 安裝目錄
  • 系統類型
  • 模塊選項
  • 雜項選項
  • 傳遞給apr-config腳本的選項
  • 特殊程序包選項
  • 支持程序選項

配置選項

下列選項會影響configure腳本自身的行為。方括號"[]"內是默認值。

-C --config-cache
等價于 --cache-file=config.cache
--cache-file=FILE
在FILE文件中緩存測試結果(默認禁用)。
-h --help [short|recursive]
顯示幫助信息然后退出。使用short參數將只顯示正在運行的當前腳本的選項,而不能列出適用于Apache配置腳本所運行的外部配置腳本的選項。使用recursive參數將顯示所有程序包的簡短描述。
-n --no-create
configure腳本運行結束后不輸出結果文件,常用于正式編譯前的測試。
-q --quiet
不顯示腳本工作期間輸出的"checking ..."消息。
--srcdir=DIR
指定源代碼所在目錄DIR 。[configure腳本所在目錄或父目錄]
--silent
等價于 --quiet
-V --version
顯示版權信息后退出。

安裝目錄

這些選項控制著安裝目錄的結構。安裝目錄的結構取決于所選擇的布局。方括號"[]"內是默認值。

--prefix=PREFIX
體系無關文件的頂級安裝目錄PREFIX ,也就Apache的安裝目錄。[/usr/local/apache2]
--exec-prefix=EPREFIX
體系相關文件的頂級安裝目錄EPREFIX ,把體系相關的文件安裝到不同的位置可以方便地在不同主機之間共享體系相關的文件。[PREFIX]

默認情況下,make install 將會把所有文件分別安裝到/usr/local/apache2/bin , /usr/local/apache2/lib 目錄下。可以用 --prefix 指定一個不同于/usr/local/apache2的安裝前綴,比如:--prefix=$HOME

定義一個目錄布局

--enable-layout=LAYOUT
使用名為LAYOUT的布局配置所有源代碼和編譯腳本。這樣就允許你在安裝Apache時分別指定不同文件的安裝位置。config.layout文件中包含了默認布局的示例,你可以根據它創建你自己的布局。這個文件中的不同布局使用<Layout FOO>...</Layout>段進行分組,其中的FOO就是布局名。默認的布局是Apache

安裝目錄微調

可以使用下面的選項微調安裝目錄。下列選項的默認值由autoconf自動設置并在方括號"[]"內說明。

--bindir=DIR
用戶可執行目錄DIR 。用于存放對網站管理員很有幫助的htpasswd, dbmmanage之類的支持程序。
[EPREFIX/bin]
--datadir=DIR
Web服務器只讀的體系無關數據目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/share]
--includedir=DIR
Apache的C頭文件目錄DIR 。
[EPREFIX/include]
--infodir=DIR
信息文檔目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/info]
--libdir=DIR
對象代碼庫目錄DIR 。
[EPREFIX/lib]
--libexecdir=DIR
程序可執行目錄DIR ,也就是動態加載模塊目錄。
[EPREFIX/libexec]
--localstatedir=DIR
可寫的單一機器數據目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/var]
--mandir=DIR
手冊文檔目錄DIR 。
[EPREFIX/man]
--oldincludedir=DIR
非gcc的C頭文件目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[/usr/include]
--sbindir=DIR
系統管理員可執行目錄DIR ,用于存放運行HTTP服務器所必須的httpd, apachectl, suexec之類的服務程序。
[EPREFIX/sbin]
--sharedstatedir=DIR
可寫的體系無關數據目錄DIR 。雖然autoconf提供了該選項,但Apache并未使用它。
[PREFIX/com]
--sysconfdir=DIR
只讀的單一機器數據目錄DIR ,用于存放httpd.confmime.types之類的服務器配置文件。
[PREFIX/etc]

系統類型

這些選項用于交叉編譯在其他平臺上運行的Apache HTTP服務器。在同一平臺上編譯和運行Apache HTTP服務器通常不需要使用這些選項,腳本會自動檢測并設置。方括號"[]"內是默認值。

--build=BUILD
指定編譯工具所在系統的系統類型BUILD 。
[config.guess腳本的檢測結果]
--host=HOST
指定Apache HTTP服務器將要運行的目標系統類型HOST 。
[BUILD]
--target=TARGET
configure for building compilers for TARGET類型的系統。雖然autoconf提供了該選項,但Apache并未使用它。
[HOST]

模塊選項

有兩種使用模塊的方法:一是靜態連接進核心,二是作為DSO模塊動態加載;如果編譯中包含任何DSO模塊,則mod_so會被自動包含進核心。如果希望核心能夠裝載DSO,但不實際編譯任何DSO模塊,則需明確指定"--enable-so=static"。

一般語法

一般情況下你可以使用如下語法啟用或者禁用某個模塊:

--disable-MODULE
禁用MODULE模塊(僅用于基本模塊)
--enable-MODULE=shared
將MODULE編譯為DSO(可用于所有模塊)
--enable-MODULE=static
將MODULE靜態連接進核心(僅用于擴展和實驗模塊)
--enable-mods-shared=MODULE-LIST
將MODULE-LIST中的所有模塊都編譯成DSO(可用于所有模塊)
--enable-modules=MODULE-LIST
將MODULE-LIST靜態連接進核心(可用于所有模塊)

?

上述 MODULE-LIST 可以是:
(1)用引號界定并且用空格分隔的模塊名列表

--enable-mods-shared='headers rewrite dav'

(2)"most"(大多數模塊[遇見錯誤模塊時忽略該模塊而不中斷配置過程])
(3)"all"(所有模塊[遇見錯誤模塊時中斷配置過程并報錯])

--enable-mods-shared=most

注意

configure將忽略MODULE和MODULE-LIST中的拼寫錯誤,注意仔細拼寫。用于MODULE和MODULE-LIST中的名稱是"mod_NAME"中去掉"mod_"并將剩余部分中的下劃線"_"替換為連字符"-"以后的結果,比如"mod_log_config"模塊應當表示為"log-config"。

模塊列表

基本(B)模塊默認包含,必須明確禁用;擴展(E)/實驗(X)模塊默認不包含,必須明確啟用。

模塊名稱狀態簡要描述
mod_actions(B)基于媒體類型或請求方法,為執行CGI腳本而提供
mod_alias(B)提供從文件系統的不同部分到文檔樹的映射和URL重定向
mod_asis(B)發送自己包含HTTP頭內容的文件
mod_auth_basic(B)使用基本認證
mod_authn_default(B)在未正確配置認證模塊的情況下簡單拒絕一切認證信息
mod_authn_file(B)使用純文本文件為認證提供支持
mod_authz_default(B)在未正確配置授權支持模塊的情況下簡單拒絕一切授權請求
mod_authz_groupfile(B)使用純文本文件為組提供授權支持
mod_authz_host(B)供基于主機名、IP地址、請求特征的訪問控制
mod_authz_user(B)基于每個用戶提供授權支持
mod_autoindex(B)自動對目錄中的內容生成列表,類似于"ls"或"dir"命令
mod_cgi(B)在非線程型MPM(prefork)上提供對CGI腳本執行的支持
mod_cgid(B)在線程型MPM(worker)上用一個外部CGI守護進程執行CGI腳本
mod_dir(B)指定目錄索引文件以及為目錄提供"尾斜杠"重定向
mod_env(B)允許Apache修改或清除傳送到CGI腳本和SSI頁面的環境變量
mod_filter(B)根據上下文實際情況對輸出過濾器進行動態配置
mod_p_w_picpathmap(B)處理服務器端圖像映射
mod_include(B)實現服務端包含文檔(SSI)處理
mod_isapi(B)僅限于在Windows平臺上實現ISAPI擴展
mod_log_config(B)允許記錄日志和定制日志文件格式
mod_mime(B)根據文件擴展名決定應答的行為(處理器/過濾器)和內容(MIME類型/語言/字符集/編碼)
mod_negotiation(B)提供內容協商支持
mod_nw_ssl(B)僅限于在NetWare平臺上實現SSL加密支持
mod_setenvif(B)根據客戶端請求頭字段設置環境變量
mod_status(B)生成描述服務器狀態的Web頁面
mod_userdir(B)允許用戶從自己的主目錄中提供頁面(使用"/~username")
mod_auth_digest(X)使用MD5摘要認證(更安全,但是只有最新的瀏覽器才支持)
mod_authn_alias(E)基于實際認證支持者創建擴展的認證支持者,并為它起一個別名以便于引用
mod_authn_anon(E)提供匿名用戶認證支持
mod_authn_dbd(E)使用SQL數據庫為認證提供支持
mod_authn_dbm(E)使用DBM數據庫為認證提供支持
mod_authnz_ldap(E)允許使用一個LDAP目錄存儲用戶名和密碼數據庫來執行基本認證和授權
mod_authz_dbm(E)使用DBM數據庫文件為組提供授權支持
mod_authz_owner(E)基于文件的所有者進行授權
mod_cache(E)基于URI鍵的內容動態緩沖(內存或磁盤)
mod_cern_meta(E)允許Apache使用CERN httpd元文件,從而可以在發送文件時對頭進行修改
mod_charset_lite(X)允許對頁面進行字符集轉換
mod_dav(E)允許Apache提供DAV協議支持
mod_dav_fs(E)mod_dav訪問服務器上的文件系統提供支持
mod_dav_lock(E)mod_dav鎖定服務器上的文件提供支持
mod_dbd(E)管理SQL數據庫連接,為需要數據庫功能的模塊提供支持
mod_deflate(E)壓縮發送給客戶端的內容
mod_disk_cache(E)基于磁盤的緩沖管理器
mod_dumpio(E)將所有I/O操作轉儲到錯誤日志中
mod_echo(X)一個很簡單的協議演示模塊
mod_example(X)一個很簡單的Apache模塊API演示模塊
mod_expires(E)允許通過配置文件控制HTTP的"Expires:"和"Cache-Control:"頭內容
mod_ext_filter(E)使用外部程序作為過濾器
mod_file_cache(X)提供文件描述符緩存支持,從而提高Apache性能
mod_headers(E)允許通過配置文件控制任意的HTTP請求和應答頭信息
mod_ident(E)實現RFC1413規定的ident查找
mod_info(E)生成Apache配置情況的Web頁面
mod_ldap(E)為其它LDAP模塊提供LDAP連接池和結果緩沖服務
mod_log_forensic(E)實現"對比日志",即在請求被處理之前和處理完成之后進行兩次記錄
mod_logio(E)對每個請求的輸入/輸出字節數以及HTTP頭進行日志記錄
mod_mem_cache(E)基于內存的緩沖管理器
mod_mime_magic(E)通過讀取部分文件內容自動猜測文件的MIME類型
mod_proxy(E)提供HTTP/1.1的代理/網關功能支持
mod_proxy_ajp(E)mod_proxy的擴展,提供Apache JServ Protocol支持
mod_proxy_balancer(E)mod_proxy的擴展,提供負載平衡支持
mod_proxy_connect(E)mod_proxy的擴展,提供對處理HTTP CONNECT方法的支持
mod_proxy_ftp(E)mod_proxy的FTP支持模塊
mod_proxy_http(E)mod_proxy的HTTP支持模塊
mod_rewrite(E)一個基于一定規則的實時重寫URL請求的引擎
mod_so(E)允許運行時加載DSO模塊
mod_speling(E)自動糾正URL中的拼寫錯誤
mod_ssl(E)使用安全套接字層(SSL)和傳輸層安全(TLS)協議實現高強度加密傳輸
mod_suexec(E)使用與調用web服務器的用戶不同的用戶身份來運行CGI和SSI程序
mod_unique_id(E)為每個請求生成唯一的標識以便跟蹤
mod_usertrack(E)使用Session跟蹤用戶(會發送很多Cookie),以記錄用戶的點擊流
mod_version(E)提供基于版本的配置段支持
mod_vhost_alias(E)提供大批量虛擬主機的動態配置支持

多路處理模塊(MPM)

必須有而且只能有一個MPM被靜態包含進核心,你可以使用下面的配置選項進行選擇:

--with-mpm=MPM
其中,MPM是你想要使用的多路處理模塊的名字。如果你不使用這個選項,那么將會使用對應于各平臺的默認MPM,可選的MPM如下:beos, mpmt_os2, prefork, worker

第三方模塊

有至少兩種方法可以添加第三方模塊,最簡單的方法是作為配置參數提供,語法如下:

--with-module=module-type:module-file[, module-type:module-file]

module-file是模塊的源代碼文件名,該文件必須位于Apahe源代碼目錄樹的"modules/module-type"目錄下,如果configure沒有在那里找到module-file ,則將它看作一個絕對路徑名并嘗試將其復制到"modules/module-type"目錄中,如果"modules/module-type"目錄不存在,configure將新建一個"modules/module-type"目錄并在其中放置一個標準的Makefile.in文件。這種方法有兩個明顯的缺陷:

  • 模塊的源代碼必須是單一文件
  • 模塊只能靜態連接進核心,而不能作為DSO模塊
  • ?

    所以一般并不使用此方法,而是使用apxs(Apache擴展工具)來添加第三方模塊支持。

    雜項選項

    --enable-nonportable-atomics
    若只打算在486以上的CPU上運行Apache ,那么使用該選項可以啟用更加高效的基于互斥執行的原子操作。
    --enable-v4-mapped
    使用相同的套接字同時處理IPv4和IPv6的連接,也就是啟用地址映射。在FreeBSD、NetBSD、OpenBSD以外的平臺上是默認值。
    --disable-v4-mapped
    使用不同的套接字分別處理IPv4和IPv6的連接,也就是禁用地址映射。在FreeBSD、NetBSD、OpenBSD上是默認值。
    --enable-maintainer-mode
    使用所有警告和調試符號編譯源代碼,請勿用于正式服務器,它會影響性能。
    --enable-exception-hook
    允許在子進程崩潰以后啟用一個鉤子來運行異常處理程序。參見EnableExceptionHook指令
    --with-port=PORT
    設定httpd的默認的監聽端口[默認為:80],該值僅在生成默認配置文件httpd.conf時使用。
    --with-program-name=NAME
    指定可執行程序的名字[默認為:httpd],若使用此選項則默認配置文件的名字將同時變成"NAME.conf"。

    傳遞給apr-config腳本的選項

    譯者注:下述三個選項并未出現在官方手冊中,譯者不保證其真實性,譯者本人亦未使用過,僅供有興趣的玩家參考。

    --disable-threads
    禁用線程支持,如果不使用線程化的MPM ,可以關閉它以減少系統開銷。
    --disable-ipv6
    禁用IPv6支持
    --disable-dso
    禁用DSO支持

    特殊程序包選項

    這些指令用于定義特殊程序包相關的選項。

    --with-apr=DIR|FILE
    Apache可移植運行時(APR)是httpd源碼的一部分并會自動與httpd一起創建。如果你想使用一個已經存在的APR ,就必須在這里指定apr-config腳本的路徑。可以使用此腳本的絕對路徑或已有的APR安裝目錄(apr-config必須位于此目錄或者其下的"bin"子目錄中)。
    --with-apr-util=DIR|FILE
    Apache可移植運行時工具包(APU)是httpd源碼的一部分并會自動與httpd一起創建。如果你想使用一個已經存在的APU ,就必須在這里指定apu-config腳本的路徑。可以使用此腳本的絕對路徑或已有的APU安裝目錄(apu-config必須位于此目錄或者其下的"bin"子目錄中)。
    --with-ssl=DIR
    如果啟用了mod_sslconfigure腳本將會自動搜尋已經安裝的OpenSSL ,你可以在這里指定SSL/TLS工具包的安裝路徑。
    --with-z=DIR
    如果你啟用了壓縮模塊(比如mod_deflate),configure腳本將會自動搜尋已經安裝的zlib庫,你可以在這里指定它的安裝路徑。
    --with-perl=DIR
    有些用Perl寫的支持腳本,如apxsdbmmanage ,需要Perl5解釋器(5.003或以上的版本就足夠了)。如果系統中存在多個Perl解釋器,比如有系統提供的Perl 4 ,還有你自己安裝的Perl 5 ,推薦你使用該選項來指定正確的版本。如果沒有Perl 5也沒關系,這并不影響Apache httpd的編譯和安裝,只是相關的支持腳本不能使用而已。
    --with-pcre=DIR
    5.0版的Perl兼容正則表達式庫(PCRE)已經被包含進來了,如果你想使用系統中已經安裝好的PCRE ,就可以在這里指定其安裝路徑。
    --with-ldap=DIR
    一些Apache模塊,比如mod_ldapmod_authnz_ldap需要APU支持LDAP(默認并不支持),只要使用其中之一,就要使用該選項指定LDAP的安裝路徑。

    一些Apache模塊,比如mod_authn_dbmmod_rewrite需要使用DBM數據庫,APU中已經包含了SDBM ,所以這個數據庫總是可用的。如果你想使用其他類型的數據庫,就要使用以下選項:

    --with-gdbm[=path]
    使用GNU DBM代替SDBM;如果不指定path ,則configure腳本將會在默認路徑上搜索GNU DBM的包含文件和庫的位置。如果指定path ,則configure腳本會在path/libpath/include目錄中搜索GNU DBM的包含文件和庫。還可以使用"inc-path:lib-path"的形式分別指定GNU DBM的包含文件和庫的位置。
    --with-ndbm[=path]
    使用New DBM代替SDBM;如果不指定path ,則configure腳本將會在默認路徑上搜索New DBM的包含文件和庫的位置。如果指定path ,則configure腳本會在path/libpath/include目錄中搜索New DBM的包含文件和庫。還可以使用"inc-path:lib-path"的形式分別指定New DBM的包含文件和庫的位置。
    --with-berkeley-db[=path]
    使用Berkeley DB代替SDBM;如果不指定path ,則configure腳本將會在默認路徑上搜索Berkeley DB的包含文件和庫的位置。如果指定path ,則configure腳本會在path/libpath/include目錄中搜索Berkeley DB的包含文件和庫。還可以使用"inc-path:lib-path"的形式分別指定Berkeley DB的包含文件和庫的位置。

    注意

    DBM數據庫選項是由APU提供并傳遞給APU配置腳本的。所以如果使用 --with-apr-util 指定一個已安裝的APU來代替,那么這些選項便無效。你可以同時使用幾種不同的DBM實現,然后使用運行時配置動態選擇其中之一。

    支持程序選項

    --enable-static-support
    使用靜態連接(默認為動態連接)編譯所有二進制支持程序。若不使用該選項也可以使用下面的選項分別指定每個支持程序:
    --enable-static-ab
    使用靜態連接編譯ab
    --enable-static-checkgid
    使用靜態連接編譯checkgid
    --enable-static-htdbm
    使用靜態連接編譯htdbm
    --enable-static-htdigest
    使用靜態連接編譯htdigest
    --enable-static-htpasswd
    使用靜態連接編譯htpasswd
    --enable-static-logresolve
    使用靜態連接編譯logresolve
    --enable-static-rotatelogs
    使用靜態連接編譯rotatelogs

    suexec配置選項

    --enable-suexec
    使用這個選項以啟用suexec ,它可以允許你為CGI程序指定uid和gid 。如果你不精通suexec的工作機制,請不要使用它!

    僅在啟用了上述選項的情況下,才可以使用以下選項微調suexec的各種特性。方括號"[]"內是默認值。參見配置和安裝suEXEC以獲得更多信息。

    --with-suexec-bin
    suexec二進制文件目錄[--sbindir]
    --with-suexec-caller
    允許調用suexec的用戶,必須和運行httpd子進程的用戶相同。
    --with-suexec-docroot
    允許suexec對其中的文件具有執行權限的根目錄[--datadir/htdocs]
    --with-suexec-gidmin
    允許執行suexec的最小GID[100]
    --with-suexec-logfile
    suexec日志文件名[默認文件名為:suexec_log ,位于--logfiledir目錄下]
    --with-suexec-safepath
    suexec"安全"的PATH環境變量的值[/usr/local/bin:/usr/bin:/bin]
    --with-suexec-userdir
    用戶主目錄下允許suexec對其中的文件具有執行權限的子目錄,僅在將suexec和用戶網站目錄(由mod_userdir提供支持)一起使用的情況下才需要設置此選項。[public_html]
    --with-suexec-uidmin
    允許執行suexec的最小UID[100]
    --with-suexec-umask
    suexec進程的umask[取決于系統的設定]

    環境變量

    可以通過指定某些環境變量來修改configure腳本的默認選擇,或者幫助configure腳本找到名字和/或位置不標準的庫和程序。

    CC
    C編譯器
    CFLAGS
    C編譯器的flags
    CPP
    C預處理程序
    CPPFLAGS
    C/C++預處理程序flags,比如使用"-Iincludedir"指定一個非標準的頭文件目錄includedir 。
    LDFLAGS
    連接器flags,比如使用"-L-Llibdir"指定一個非標準的庫文件目錄libdir 。

    文章出自:http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/programs/configure.html#installationdirectories

    轉載于:https://blog.51cto.com/angf2/393228

    總結

    以上是生活随笔為你收集整理的configure - 配置源代码树的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。