apache的模組載入包括兩部分
第一部分是prelink的模組,這部分模組已經鏈結好了
在modules.c中
ap_declare_data module *ap_prelinked_modules = ;
第二部分需要通過動態載入,
1、在動態載入之前apache構建乙個模組鍊錶,首先將
prelink
的模組載入進來,並將鍊錶的入口
ap_top_module
設為 so_module
,這個模組很重要,他是用來載入其他動態模組的。
2、載入完prelink的模組之後,開始將其他動態模組裝入鍊錶,
apache
有乙個配置檔案,
,檔案中列出來需要載入的模組和其他資訊,通過讀配置檔案找到需要載入的模組檔案位址,就是模組
so檔案的位址,已經寫在了配置檔案中。
3、對每乙個讀到的模組檔案位址呼叫so_module模組的
load_module
函式,load_module
函式的呼叫比較有趣,
so_module
模組有乙個引數列表
cmds
typedef struct command_struct command_rec;
struct command_struct ;
這個引數列表基本每個模組裡面都有,它有乙個
func函式,每個模組這個函式的用途不同,
so_module
裡面這個函式是
load_module
,用來將其他模組匯入鍊錶,因此
so_module
中load_module
函式的呼叫就是通過這個結構體來實現的,具體的是通過呼叫
so_module
模組類呼叫
command_rec
,再來呼叫
load_module
,講得比較囉嗦,總之,進入
load_module
之後就可以呼叫需要的模組了。
4、將模組加入鍊錶是通過函式getprocaddress來實現的,這個函式可以獲取匯出動態庫中的匯出函式,我們這裡獲取的是結構體
typedef struct module_struct module;
struct module_struct ;
5、這就是每個模組的結構體,再將它像prelink模組一樣加入鍊錶就可以了。
Apache載入php模組
vc6就是legacy visual studio 6 compiler,就是使用這個編譯器編譯的。vc9就是the visual studio 2008 compiler,就是用微軟的vs編輯器編譯的。那我們如何選擇php版本呢?如果你是在windows下使用apa php呢?apache php...
apache模組載入命令 Apache安裝教程
安裝apache需要檢查linux作業系統中是否安裝了gcc包,如果沒有安裝gcc包,則需要安裝gcc包,否則所有的依賴包將無法編譯安裝。1.rpm qa grep gcc 檢視系統有無安裝gcc編譯器 2.安裝gcc和gcc c 需要以下依賴包 kernel headers 2.6.18 164....
Apache模組動態載入和靜態載入
在 使用.configure 編譯的時候,如果不指定某個模組為動態,即沒有使用 enable mods shared module 或者enable module shared這個2 個中的乙個,那麼所有的預設模組為靜態。那麼何謂靜態?其實就是編譯的時候所有的模組自己編譯進 這個檔案中 我們啟動可以...