1.生成擴充套件骨架:./ext_skel --extname=xianwenjun
2.進入擴充套件目錄: cd xianwenjun
3.編寫擴充套件**: vim xianwenjun.c
4.修改擴充套件配置: vim config.m4
5.phpize編譯(檢視phpize所在路徑find / -name phpize查詢):
/usr/cneos/buildarm64/ft-yinhe-cross/host/aarch64-buildroot-linux-gnu/sysroot/usr/bin/phpize
history:檢視歷史
6.執行configure
./configure --build=x86_64-redhat-linux --host=aarch64-buildroot-linux-gnu --target=aarch64-buildroot-linux-gnu --with-php-config=/usr/cneos/buildarm64/ft-yinhe-cross/host/aarch64-buildroot-linux-gnu/sysroot/usr/bin/php-config
7.編譯: make
8.清理快取 make clean
9.安裝生成擴充套件庫: make install
檢視生成so庫的具體內容:objdump -x +so檔案路徑
2.舉例:
1.解壓並進入:
cd /root/php-5.3.28/ext
2.骨架
./ext_skel --extname=xianwenjun
3.編輯**和配置
cd xianwenjun
vim xianwenjun.c進入:
php_function(xianwenjun_helloworld)
php_fe(xianwenjun_helloworld, null) //函式註冊宣告
3.2:修改配置
vim config.m4
3.3.1.with
with是作為動態鏈結庫載入的
dnl php_arg_with(testext, for testext support,
dnl make sure that the comment is aligned:
dnl [ --with-testext include testext support])
修改內容為
php_arg_with(testext, for testext support,
dnl make sure that the comment is aligned:
[ --with-testext include testext support])
3.3.2.enable
表示編譯到php核心中.這個配置檔案創造了乙個--enable-testext的配置選項,而 php_arg_enable的第二個選項會在配置的時候顯示出來
dnl php_arg_enable(testext, whether to enable testext support,
dnl make sure that the comment is aligned:
dnl [ --enable-testext enable testext support])
修改內容為
php_arg_enable(testext, whether to enable testext support,
dnl make sure that the comment is aligned:
[ --enable-testext enable testext support])
4.執行configure
./configure --host=目標主機平台(如:aarch64-redhat-linux)
–build=編譯平台 --with-php-config=編譯配置(如:/usr/cneos/buildarm64/ft-yinhe-cross/host/aarch64-buildroot-linux-gnu/sysroot/usr/bin/php-config)
例子;./configure --build=x86_64-redhat-linux --host=aarch64-redhat-linux --with-php-config=/usr/cneos/buildarm64/ft-yinhe-cross/host/aarch64-buildroot-linux-gnu/sysroot/usr/bin/php-config
5.make編譯,make install 安裝生成擴充套件
make
make install
結束後生成的庫在它顯示資訊的路勁下。
遇到的坑:
由於是交叉編譯,需要將生成的庫放在其他平台使用,所以執行./configure時後面引數至關重要。所以需要檢查生成庫是否滿足要求:
objdump -x 生成庫路徑檢視庫詳細資訊
特別注意objdump -x顯示的庫檔案資訊中架構是什麼,是不是你所想的架構
自定義交叉驗證
sklearn中有cross val score 交叉驗證函式,也可以自定義此函式 from sklearn.model selection import stratifiedkfold from sklearn.base import clone skfolds stratifiedkfold n...
自定義擴充套件點
外掛程式開發久了,難免遇到需要自定義擴充套件點的需求,那麼如何自定義擴充套件點呢?以編寫乙個快捷選單項為例,說明如下 假設終端使用者可通過如下配置來擴充套件快捷選單項 com.kdevn.test.mypopupmenus label mynewaction class com.kdevn.test...
使用自定義 OpenSSL 庫編譯 nginx
編譯安裝 nginx 時,預設使用系統自帶的 openssl 庫,但其一般很老,不支援如 sdpy 等新功能。with openssl引數雖然可以指定 openssl 路徑,但只支援 openssl 的源 不支援已編譯好的 openssl。每回更新 nginx 都要重新編譯 openssl 肯定很麻...