php C 擴充套件的開發

2021-07-11 03:44:12 字數 1191 閱讀 4227

最近兩天,學習了一下php c++擴充套件的開發流程。 中間遇到不少坑,特此記錄。

建立乙個mongo_cpp擴充套件

1. 建立擴充套件的目錄

#cd php-5.3.6/ext

#./ext_skel --extname=hello

2.編輯config.m4

放開一下內容:

php_arg_enable(hello, whether to enable hello support,

make sure that the comment is aligned:

[  --enable-hello           enable hello support])

還要新增一下內容:

php_require_cxx()

php_subst(mongo_cpp_shared_libadd)

php_add_library(stdc++, 1, mongo_cpp_shared_libadd)

php_new_extension(mongo_cpp, mongo_cpp.cpp, $ext_shared)

3.生成configure和makefile

#/***x/php/bin/phpize

#./configure --with-php-config=/usr/local/php5/bin/php-config

4. 編輯makefile

修改include和ldflag,還要新增除mongo_cpp.cpp

外其他cpp的編輯任務,並新增到shared_objects_mongo_cpp;

編譯過程可能還需要-fpic

5. 在php_mongo_cpp.h中使用巨集宣告函式

6. 在mongo_cpp.cpp中 先在入口函式中註冊所有新增的函式; 再在檔案最後部分新增函式的定義。

7.. sudo make  ; sudo make install;

至此/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/下有了mongo_cpp.so

8. 在php.ini中新增extention

9.  如果生成mongo_cpp.so中用到了其他so(即使用的是.a,本人不理解為什麼),執行前,要新增其路徑到ld_library_path.

10.  擴充套件中的一些巨集函式也要查資料,此處不敘述。

PHP C擴充套件初探

ubuntu14.4 php5.5.9 通過apt get 安裝 sudo apt get source php5儲存目錄可自定義 開啟原始碼檔案進入到ext中,這裡是存放擴充套件的地方,我們可以看到有 許多官方的擴充套件 這裡可以科普一下php原始碼的主要目錄以及功能 main包含php主要巨集定...

編寫乙個簡單的php C擴充套件

注意此處生成的擴充套件是linux版的php擴充套件 故生成的擴充套件結尾是.so的檔案 nginx 1.15.10 mysql 5.6.44 php 7.0 環境是lnmp 1.找到php的安裝目錄下的ext資料夾 且存在ext skel檔案 2.ext skel extname test add...

交叉編譯php c擴充套件庫(自定義的c擴充套件)

1.生成擴充套件骨架 ext skel extname xianwenjun 2.進入擴充套件目錄 cd xianwenjun 3.編寫擴充套件 vim xianwenjun.c 4.修改擴充套件配置 vim config.m4 5.phpize編譯 檢視phpize所在路徑find name ph...