Apache模組載入流程

2021-08-09 17:09:48 字數 1301 閱讀 7632

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 個中的乙個,那麼所有的預設模組為靜態。那麼何謂靜態?其實就是編譯的時候所有的模組自己編譯進 這個檔案中 我們啟動可以...