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

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

有關PHP 中 config.m4 的探索

瀏覽:177日期: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一区二区三区四区| 日韩一区二区三区精品| 青草久久视频| 国产精品久久国产愉拍| 久久精品欧洲| 日韩精品首页| 免费高潮视频95在线观看网站| 人人香蕉久久| 亚洲在线观看| 欧美一区在线观看视频| 麻豆一区二区在线| 中文字幕系列一区| 视频一区二区国产| 久久精品97| 理论片午夜视频在线观看| 欧美日中文字幕| 中文无码久久精品| 老司机免费视频一区二区三区| 日韩成人综合| 蜜桃视频一区二区三区在线观看| 91成人在线精品视频| 欧美国产中文高清| 久久精品av| 日韩美女精品| 精品国产亚洲一区二区三区大结局| 日韩欧美视频专区| 欧美专区18| 欧美a在线观看| 久久精品观看| 91午夜精品| 日韩欧美一区二区三区在线观看 | 国产精品**亚洲精品| 国产成人精品亚洲线观看 | 久久99久久久精品欧美| 中文字幕在线看片| 麻豆久久精品| 欧美成人精品一级| 亚洲精品va| 国产亚洲电影| 久久高清免费| 欧美欧美黄在线二区| 日韩av片子| 亚洲欧美日本日韩| 久久福利在线| 亚洲精品va| 免费在线观看一区| 国产精品日韩| 精品三区视频| 黄色欧美日韩| 精品伊人久久久| 免费看的黄色欧美网站| 精品久久影院| 亚洲精品动态| 99久精品视频在线观看视频| 欧美一区不卡| 九一精品国产| 国产精品蜜月aⅴ在线| 九九在线精品| 精品久久福利| 涩涩涩久久久成人精品| 91精品一区国产高清在线gif| 欧美亚洲色图校园春色| 91成人精品视频| 国产一区丝袜| 日韩国产在线一| 免费不卡中文字幕在线| 精品视频一区二区三区在线观看| 蜜桃久久久久久| 日韩欧美一区二区三区在线视频| 日韩精品高清不卡| 不卡视频在线| 精品国产乱码久久久久久1区2匹| 视频一区二区中文字幕| 日韩欧美在线中字| 久久av免费| 亚洲精品乱码久久久久久蜜桃麻豆| 日本精品影院| 成人一区而且| 久久99久久人婷婷精品综合| 天堂va欧美ⅴa亚洲va一国产| 蜜臀久久99精品久久一区二区| 国产精品99在线观看| 国产精品日本一区二区三区在线| 亚洲欧美一级| 日韩中文字幕亚洲一区二区va在线| 久久黄色影院| 久久男人av资源站| 久久中文字幕一区二区| 日韩av中文字幕一区| 日本欧洲一区二区| 91成人超碰| 不卡中文字幕| 天堂资源在线亚洲| 久久久久.com| 日韩一区二区中文| 成人精品久久| 水蜜桃精品av一区二区| 国产精品亚洲综合色区韩国| 一区二区三区四区在线观看国产日韩| 国产一区视频在线观看免费| 日韩伦理一区| 正在播放日韩精品| 精品视频一区二区三区在线观看| 国产精品传媒麻豆hd| 欧美日韩调教| 欧美欧美黄在线二区| 国产三级精品三级在线观看国产| 91在线成人| 欧美日本久久| 国产欧美日韩精品一区二区免费 | 久久国际精品| 日韩av中文字幕一区| 日韩国产在线不卡视频| 日韩精品一区二区三区av| 欧美综合二区| 午夜一区在线| 一区二区高清| 日韩福利视频导航| 国产调教精品| 欧美成a人片免费观看久久五月天| 国产美女视频一区二区| 国产精品v日韩精品v欧美精品网站| 国产精品成人自拍| 四虎国产精品免费观看| 欧美成人a交片免费看| 精品亚洲美女网站| 欧美精选一区二区三区| 亚洲在线免费| 人人爱人人干婷婷丁香亚洲| 欧美影院视频| 国产伦乱精品| 国产精品久久久久久久免费观看| 免费高潮视频95在线观看网站| 99久久久久久中文字幕一区| 伊人久久亚洲影院| 一级成人国产| 欧美伊人影院| 国产a久久精品一区二区三区| 日韩欧美二区| 亚洲一区网站| 欧美亚洲综合视频| 国产精品麻豆久久| 亚洲高清不卡| 免费观看久久久4p| 欧美在线精品一区| 久久97视频| 99成人在线视频| 亚洲一区二区日韩| 国产精品免费大片| 成人日韩在线| 老色鬼久久亚洲一区二区| 青草av.久久免费一区| 久久精品资源| 国产高清一区| 国产欧美69| 久久亚洲成人| 日韩精品视频一区二区三区| 精品一二三区| 在线视频精品| 国产精品男女| 日韩毛片视频| 亚洲精品在线二区| 国产一区二区亚洲| 尤物网精品视频| 国产精品日韩精品在线播放| 欧美色图一区| 青青草91视频| 久久天堂成人| 欧美一级网址| 亚洲午夜视频| 国产麻豆精品| 99国产成+人+综合+亚洲欧美| 国产精品最新| 91精品91| 久久精品一本| 免费国产自久久久久三四区久久| 欧美一区二区三区久久| 电影天堂国产精品| 日本午夜精品视频在线观看| 99成人在线视频| 国产经典一区| 亚洲综合精品四区| 久久久久久婷| 婷婷精品在线| 久久中文字幕二区| 国产精品极品| 石原莉奈一区二区三区在线观看| 精品无人区麻豆乱码久久久| 中文无码日韩欧| 日韩欧美精品一区| 日本在线观看不卡视频|