strongswan -- STRONGSWAN_CONF是如何傳到代碼裏的
配置文件strongswan.conf是通過STRONGSWAN_CONF讀取並加載的。
通過source insight加載了strongswan整個工程文件(只包括.c和.h文件),發現沒有地方給STRONGSWAN_CONF賦值。
而在charon進程加載時,STRONGSWAN_CONF是有值的,這個值是從哪裏來的呢?
搜索了strongswan所有代碼,發現與STRONGSWAN_CONF有關的有如下幾處:
圖中顯示Makefile.am和Makefile.in中有STRONGSWAN_CONF相關的語句。
Makefile.in中的語句如下圖:
gcc的參數“-D”含義如下:
-Dmacro
以字符串“1”定義 MACRO 宏
相當於C語言中的#define macro
-Dmacro=defn
以字符串“defn”定義 MACRO 宏
相當於C語言中的#define macro defn
其他參數介紹可參見:
https://www.cnblogs.com/zhangsir6/articles/2956798.html
實際make的時候執行的是Makefile。打開Makefile可以看到,其中引用了Makefile.in和Makefile.am。
如此一來便追蹤到STRONGSWAN_CONF的源頭。
註:
打開strongswan的Makefile發現如下兩句註釋,可以看出Makefile.am、Makefile.in和Makefile相生相依的關系。
strongswan -- STRONGSWAN_CONF是如何傳到代碼裏的