婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 有關PHP 中 config.m4 的探索

有關PHP 中 config.m4 的探索

熱門標簽:電子地圖標注怎么修改 梧州市機器人外呼系統怎么樣 廈門400電話辦理選易號網 臨沂crm外呼系統平臺 如何在世界地圖標注 公司外呼系統中心 天客通地圖標注 地圖標注符號樣式有 菏澤語音外呼系統運營商

最近在看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 中的代碼:

dnl
dnl $Id$
dnl

PHP_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.htm
https://zh.wikipedia.org/wiki/M4_(%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80)
https://blog.csdn.net/timekeeperl/article/details/50738164
https://docstore.mik.ua/orelly/webprog/php/ch14_04.htm

總結

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

您可能感興趣的文章:
  • phpinfo()中Loaded Configuration File(none)的解決方法
  • CodeIgniter配置之config.php用法實例分析
  • 編譯PHP報錯configure error Cannot find libmysqlclient under usr的解決方法
  • phpmyadmin config.inc.php配置示例
  • PHP中防止直接訪問或查看或下載config.php文件的方法
  • php中配置文件操作 如config.php文件的讀取修改等操作

標簽:貴陽 郴州 雞西 瀘州 黃石 迪慶 綿陽 白城

巨人網絡通訊聲明:本文標題《有關PHP 中 config.m4 的探索》,本文關鍵詞  有關,PHP,中,config.m4,的,探索,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《有關PHP 中 config.m4 的探索》相關的同類信息!
  • 本頁收集關于有關PHP 中 config.m4 的探索的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    麻豆国产欧美日韩综合精品二区| 国产一区免费电影| 99国产精品一区| 日韩精品一区第一页| 国产欧美日韩精品在线| 91在线观看地址| 激情综合色丁香一区二区| 久久精品日产第一区二区三区高清版| 欧美老肥妇做.爰bbww视频| 色婷婷综合久久久中文字幕| 高潮精品一区videoshd| 美女任你摸久久| 亚洲国产一区二区三区| 国产亚洲精品免费| 久久久久久久久97黄色工厂| 欧美一区二区免费视频| 在线观看日韩电影| 91麻豆国产福利在线观看| 国产成人av在线影院| 国产精品一区二区视频| 偷偷要91色婷婷| 日韩黄色小视频| 午夜精品久久久久久久99水蜜桃| 亚洲最大的成人av| 中文字幕一区av| 中文字幕一区二区在线观看| 国产精品成人午夜| 亚洲欧美一区二区三区国产精品| 亚洲精品中文在线影院| 亚洲图片欧美色图| 欧美bbbbb| 国产一区二区三区在线观看免费| 国产大片一区二区| www.亚洲国产| 欧美三级中文字| 欧美一区二区三区免费观看视频| 欧美v亚洲v综合ⅴ国产v| 精品欧美一区二区三区精品久久| 久久综合五月天婷婷伊人| 久久精品一区二区| 亚洲三级在线播放| 亚洲影院免费观看| 人人狠狠综合久久亚洲| 国产一区二区0| 成人av午夜影院| 欧美日韩高清不卡| 欧美mv日韩mv国产| 一区精品在线播放| 日韩精品色哟哟| 国产麻豆精品一区二区| 99久久99久久精品免费看蜜桃| youjizz久久| 欧美精品一二三区| 欧美韩国一区二区| 日韩二区在线观看| 99久久久无码国产精品| 欧美日韩中文字幕精品| 国产婷婷色一区二区三区四区| 一区二区三区中文免费| 久久99精品国产麻豆婷婷洗澡| www.欧美色图| 精品精品国产高清一毛片一天堂| 国产精品久久夜| 精品在线一区二区三区| 日本韩国欧美一区| 国产亚洲精久久久久久| 日本欧美韩国一区三区| 91美女精品福利| 国产亚洲1区2区3区| 无码av中文一区二区三区桃花岛| 成人综合在线观看| 日韩一区二区免费在线电影| 1区2区3区欧美| 激情五月婷婷综合网| 欧美综合视频在线观看| 国产精品欧美经典| 国产在线不卡一区| 日韩美女一区二区三区| 亚洲18色成人| 不卡在线视频中文字幕| 久久久久久日产精品| 日本网站在线观看一区二区三区| 91亚洲午夜精品久久久久久| 欧美mv日韩mv国产网站app| 亚洲一区成人在线| 91免费视频大全| 国产精品第一页第二页第三页| 激情综合色播激情啊| 欧美成人免费网站| 喷白浆一区二区| 69堂成人精品免费视频| 亚洲成人综合在线| 精品视频免费看| 亚洲精品成人a在线观看| av电影一区二区| 中文在线一区二区| 成人亚洲精品久久久久软件| www欧美成人18+| 国产在线精品视频| 26uuu国产一区二区三区| 黄色小说综合网站| 久久久不卡网国产精品一区| 国产精品中文欧美| 国产婷婷色一区二区三区四区 | 欧美精品欧美精品系列| 亚洲码国产岛国毛片在线| 99热在这里有精品免费| 亚洲桃色在线一区| 欧美三级韩国三级日本一级| 一区二区三区色| 欧美色视频一区| 免费观看成人av| 久久综合久色欧美综合狠狠| 国产成人免费xxxxxxxx| 亚洲美女屁股眼交| 欧美久久久久久久久久| 国产在线精品视频| 亚洲日本在线天堂| 欧美群妇大交群中文字幕| 蜜臀av性久久久久蜜臀av麻豆| 欧美精品一区二区三区蜜桃视频| 成人性生交大片免费看在线播放| 亚洲日韩欧美一区二区在线| 欧美日韩精品久久久| 国产在线一区二区综合免费视频| 欧美国产日韩亚洲一区| 日本福利一区二区| 精品一区二区三区免费| 中文字幕一区二区三中文字幕| 欧美日韩卡一卡二| 久久se精品一区精品二区| 综合av第一页| 欧美一级二级三级蜜桃| 成人91在线观看| 美国一区二区三区在线播放| 欧美韩国日本不卡| 欧美日韩视频在线第一区| 九九国产精品视频| 亚洲欧美电影一区二区| 日韩欧美国产电影| 日本久久一区二区| 国产真实乱偷精品视频免| 亚洲一区二区精品视频| 国产精品污www在线观看| 91精品麻豆日日躁夜夜躁| 成人毛片视频在线观看| 免费一级欧美片在线观看| 亚洲精品国产第一综合99久久| 欧美成人伊人久久综合网| 欧美综合一区二区| 成人小视频在线观看| 免费在线观看日韩欧美| 亚洲精品少妇30p| 国产亚洲欧洲一区高清在线观看| 在线不卡一区二区| av午夜一区麻豆| 国产最新精品免费| 久久精品国产成人一区二区三区| 亚洲免费资源在线播放| 中文字幕二三区不卡| wwwwww.欧美系列| 在线视频综合导航| 99精品久久免费看蜜臀剧情介绍| 激情五月激情综合网| 日韩精品乱码av一区二区| 亚洲人成网站在线| 国产精品伦理在线| 国产欧美日产一区| 精品国产乱码久久久久久免费| 欧美日韩激情一区二区| 在线影院国内精品| 丁香另类激情小说| 激情综合色丁香一区二区| 人妖欧美一区二区| 麻豆freexxxx性91精品| 日韩高清不卡一区| 人妖欧美一区二区| 美腿丝袜在线亚洲一区| 亚洲高清视频在线| 亚洲一区二区偷拍精品| 首页综合国产亚洲丝袜| 亚洲123区在线观看| 亚洲3atv精品一区二区三区| 日韩av在线播放中文字幕| 日韩国产精品大片| 午夜精品一区二区三区电影天堂 | 欧美日韩视频不卡| 欧美撒尿777hd撒尿| 欧美一区二区视频在线观看 | 日韩二区在线观看| 日本中文在线一区| 毛片不卡一区二区| 国产麻豆精品在线观看| 成人自拍视频在线| 91热门视频在线观看| 91丨九色丨蝌蚪丨老版| 欧美三级韩国三级日本一级| 欧美一级夜夜爽| 欧美国产一区二区| 亚洲免费观看在线视频|