日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

有關PHP 中 config.m4 的探索

瀏覽:173日期:2022-09-09 10:50:19

最近在看php擴展相關的東西,雖然來來回回編輯了好多次config.m4,并且也在技術社區看到了 config.m4是什么?什么作用? 類的問題,但是還是覺得有必要在深入的了解下。

.m4后綴的文件一般被當做 通用的宏處理,來看下官方的介紹:

GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.

GNU M4 is a macro processor in the sense that it copies its input to the output expanding macros as it goes. Macros are either builtin or user-defined and can take any number of arguments. Besides just doing macro expansion, m4 has builtin functions for including named files, running UNIX commands, doing integer arithmetic, manipulating text in various ways, recursion etc... m4 can be used either as a front-end to a compiler or as a macro processor in its own right.

One of the biggest users of GNU M4 is the GNU Autoconf project.

簡單而通俗易懂的翻譯下:GNU M4是傳統UNIX宏處理器的一種實現方式,它還具有一些內置功能,包括文件,shell,運算等。作為一個宏處理器,將輸入復制到擴展的輸出,它要么內置,要么用戶定義,且可以接受參數。另外這個還有內置函數,包括命名文件、運行UNIX命令、執行整數運算、以各種方式操作文本、遞歸等。M4既可以作為編譯器的前端使用,也可以作為自己的宏處理器使用。GNU M4的最大用戶之一是GNU AutoCOF項目。

到這里大致了解到,它是作為一個宏處理器,然后再想想PHP擴展里面用到它做了什么,先看看 php源碼擴展目錄ext中 bcmath 中的代碼:

dnldnl $Id$dnlPHP_ARG_ENABLE(bcmath, whether to enable bc style precision math functions,[ --enable-bcmath Enable bc style precision math functions])if test '$PHP_BCMATH' != 'no'; then PHP_NEW_EXTENSION(bcmath, bcmath.c libbcmath/src/add.c libbcmath/src/div.c libbcmath/src/init.c libbcmath/src/neg.c libbcmath/src/outofmem.c libbcmath/src/raisemod.c libbcmath/src/rt.c libbcmath/src/sub.c libbcmath/src/compare.c libbcmath/src/divmod.c libbcmath/src/int2num.c libbcmath/src/num2long.c libbcmath/src/output.c libbcmath/src/recmul.c libbcmath/src/sqrt.c libbcmath/src/zero.c libbcmath/src/debug.c libbcmath/src/doaddsub.c libbcmath/src/nearzero.c libbcmath/src/num2str.c libbcmath/src/raise.c libbcmath/src/rmzero.c libbcmath/src/str2num.c, $ext_shared,,-I@ext_srcdir@/libbcmath/src) PHP_ADD_BUILD_DIR($ext_builddir/libbcmath/src) AC_DEFINE(HAVE_BCMATH, 1, [Whether you have bcmath])fi

【dnl 在m4語法中相當于行注釋的意思】

一些書籍中說明: config.m4是包含了配置時所執行的指令,例如上面這段代碼很顯然表明了,我寫這個bcmath擴展,需要libbcmath/src/add.c,libbcmath/src/div.c 等等這些外部c源文件。PHP_NEW_EXTENSION()則是PHP定義的一個宏,最后的$ext_shared參數用來聲明這個擴展不是一個靜態模塊,而是在php運行時動態加載的。好像 我感覺還是不算太清晰,我在用一段白話來試圖描述下吧。config.m4文件中的代碼會進入配置腳本的,也就是 configure。這里面包含 擴展的開關,擴展的名稱,所需要的代碼等等你想做的事情。為什么這么玩呢,因為PHP是使用 autoconf, automake, and libtool 3件套來構建擴展的,這3劍客一起使用,威力很大,但是也有點難。當擴展是PHP源碼中的一部分時,我們可以在頂級目錄 運行buildconf腳本,它會掃描每個子目錄中的config.m4文件,然后他會把所有的配置文件config.m4合成一個 包含所有配置開關的 配置腳本。 這樣的話,每個擴展就可以自己實現自己的配置檢查,檢查其所需的任何依賴和系統支持。區域這些想法和過程,宏檢查和配置等工作,PHP選擇了使用通過的M4腳本來配置

這里config.4文件的探索告一段落了,好像明白了一些了~~-。-

另外附一些PHP的宏,buildconf 處理config.m4所用:

AC_MSG_CHECKING(message)在執行 configure 命令時輸出“checking ”等信息。

AC_MSG_RESULT(value)取得 AC_MSG_CHECKING 的執行結果,一般情況下 value 應為 yes 或 no。

AC_MSG_ERROR(message)在執行 configure 命令時輸出一條錯誤消息 message 并中止腳本的執行。

AC_DEFINE(name,value,description)向 php_config.h 添加一行定義:#define name value // description (這對模塊的條件編譯很有用。)

AC_ADD_INCLUDE(path)添加一條編譯器的包含路徑,比如用于模塊需要為頭文件添加搜索路徑。

AC_ADD_LIBRARY_WITH_PATH(libraryname,librarypath)指定一個庫的連接路徑。

AC_ARG_WITH(modulename,description,unconditionaltest,conditionaltest)這是一款比較強大的宏,用于將模塊的描述 description 添加到“configure ?help”命令的輸出里面。PHP 會檢查當前執行的 configure 腳本里面有沒有?with- 這個選項。 如果有則執行 unconditionaltest 語句(比如 ?with-myext=yes 等), 此時,選項的值會被包含在 $withval 變量里面。否則就執行 conditionaltest 語句。

PHP_EXTENSION(modulename, [shared])這個是配置你的擴展時 PHP 必定調用的一個宏。你可以在模塊名后面提供第二個參數,用來表明是否將其編譯為動態共享模塊。這會導致在編譯時為你的源碼提供一個 COMPILE_DL_ 的定義。

上述有查到以下頁面索取資料:https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_72/com.ibm.aix.genprogc/m4macro.htmhttps://zh.wikipedia.org/wiki/M4_(%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80)https://blog.csdn.net/timekeeperl/article/details/50738164https://docstore.mik.ua/orelly/webprog/php/ch14_04.htm

總結

到此這篇關于PHP 中 config.m4 的探索的文章就介紹到這了,更多相關PHP 中 config.m4內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
毛片不卡一区二区| 久久中文字幕二区| 午夜av一区| 亚洲韩日在线| 色爱av综合网| 欧美香蕉视频| 国产91一区| 欧美~级网站不卡| 欧美日韩国产高清电影| 亚洲天堂成人| av日韩中文| 成人久久久久| 黄色在线一区| 免费日韩av片| 亚洲最新av| 日本一区二区三区中文字幕| 91精品丝袜国产高跟在线| 国产丝袜一区| 成人在线观看免费视频| 久久久成人网| 午夜久久免费观看| 美日韩精品视频| 日韩1区2区日韩1区2区| 久久av电影| 免费一二一二在线视频| 三上悠亚国产精品一区二区三区 | 日韩精彩视频在线观看| 日韩黄色在线观看| 免费在线日韩av| 97精品国产一区二区三区 | 91亚洲国产| 欧美日韩国产免费观看视频| 日韩影院在线观看| 蜜桃久久久久久久| 国产欧美日韩影院| 三上亚洲一区二区| 激情欧美丁香| 亚洲精品亚洲人成在线观看| 国产欧美日韩精品高清二区综合区| 国产精品久久久久av蜜臀| 国产精品毛片久久| 狠狠色综合网| 青草久久视频| 久久久久久色 | 亚洲欧美日本国产| 日韩不卡免费视频| 久久这里只有| 欧美91视频| 日韩国产欧美一区二区三区| 国产福利一区二区三区在线播放| 人人草在线视频| 国产亚洲在线观看| 国产精品尤物| 久久久夜夜夜| 日本在线观看不卡视频| 精品国产一区二区三区噜噜噜| 久久一区二区三区喷水| 中文字幕亚洲影视| 成人台湾亚洲精品一区二区| 国产精品腿扒开做爽爽爽挤奶网站| 蜜臀av亚洲一区中文字幕| 国产精品分类| 国产精品人人爽人人做我的可爱| 国产欧美一区二区三区米奇| 国产99久久久国产精品成人免费| 日韩中文字幕一区二区高清99| 美女视频免费精品| 婷婷亚洲五月色综合| 国产午夜久久av| 欧美日韩激情| 欧美日本精品| 亚洲成人日韩| 久久精品国产999大香线蕉| 亚洲一区二区免费看| 九九九精品视频| 最新日韩欧美| 精品国产一区二| 石原莉奈在线亚洲三区| 国语对白精品一区二区| 三级亚洲高清视频| 成人在线视频免费| 日韩高清中文字幕一区| 亚洲网站视频| 老司机精品视频网| 亚洲丝袜美腿一区| 欧美色图国产精品| 麻豆91精品视频| 亚欧洲精品视频在线观看| 久久精选视频| 麻豆中文一区二区| 视频在线观看一区| 91成人小视频| av成人国产| 国产一区2区在线观看| 久久高清免费观看| 嫩草伊人久久精品少妇av杨幂 | 国产精品视频一区视频二区| 亚洲欧美网站| 久久久久国产精品一区三寸| 国产福利一区二区三区在线播放| 日韩免费一区| 日韩精品一页| 国产农村妇女精品一二区 | 一二三区精品| 精品欧美激情在线观看| 精品国产午夜肉伦伦影院| 久久精品99久久久| 精品国产乱码久久久久久1区2匹| 日韩毛片在线| 福利一区和二区| 欧美国产日韩电影| 免费观看亚洲天堂| 国产亚洲一区二区三区啪| 久久久久久自在自线| 不卡av一区二区| 精品欧美视频| 激情久久五月| 日韩中文欧美在线| 日韩88av| 国产伦理久久久久久妇女| 激情五月综合| 美女性感视频久久| 欧美激情日韩| 日韩av不卡在线观看| 免费人成网站在线观看欧美高清| 日韩在线短视频| 高清久久一区| 欧美欧美黄在线二区| 久久久久久久久99精品大| 日韩中文在线电影| 六月丁香综合在线视频| 日本成人在线一区| 91久久中文| 日韩欧美一区免费| 久久一区视频| 四虎国产精品免费观看| 国产精品chinese| 日韩avvvv在线播放| 亚洲精品极品| 亚洲91网站| 亚洲另类av| 性一交一乱一区二区洋洋av| 九九久久电影| 99精品美女| 久久国产毛片| 日韩毛片视频| 国产成人精选| 国产精品yjizz视频网| 国产成人1区| 精品国产一区二区三区av片| 国产精品一区二区三区av麻 | 久久免费精品| 精品三级在线| 色乱码一区二区三区网站| 色婷婷综合网| 91偷拍一区二区三区精品| 国产一区日韩| 麻豆精品视频在线观看| 国产精品黄色| 久久精品免费看| 麻豆精品蜜桃视频网站| 国产美女高潮在线观看| 都市激情国产精品| 98精品视频| 日韩在线短视频| 91精品国产91久久久久久黑人| 亚洲h色精品| 亚洲电影在线一区二区三区| 亚洲国产成人精品女人| 亚洲免费中文| 午夜天堂精品久久久久| 91九色综合| 国内精品美女在线观看| 日韩一区亚洲二区| 午夜精品婷婷| 日本麻豆一区二区三区视频| 亚洲精品免费观看| 日韩黄色在线观看| 日韩精品永久网址| 性欧美69xoxoxoxo| 一区二区国产在线观看| 国产精品久久久久久模特| 色乱码一区二区三区网站| 国产黄大片在线观看| 亚洲一区日韩在线| 亚洲丝袜美腿一区| 国产精品中文字幕制服诱惑| 国产成人精品亚洲线观看| 女生影院久久| 99热精品在线观看| 久久免费精品| 久久国产免费| 男女男精品视频网| 国产毛片精品| 91精品国产调教在线观看| 奇米亚洲欧美| 精品视频自拍| 亚洲欧美视频| 麻豆精品在线| 伊人精品在线|