最近兩天,學習了一下PHP c++擴充的開發流程。 中間遇到不少坑,特此紀錄。
建立一個mongo_cpp擴充
1. 建立擴充功能的目錄
#cd php-5.3.6/ext m4
PHP_ARG_ENABLE(hello, whether to enable hello support,🜎 [ --enable-hello Enable hello support])
也加入內容:
PHP_REQUIRE_CXX() PHP_REQUIRE_CXX()
PHP_NEW_EXTENSION(mongo_cpp, mongo_cpp.cpp, $ext 3.產生configure與makefile #/xxxx/php/bin/phpize
--with-php-c/local/php5/bin/php-config
(
4. 編輯Makefile
cpp外其他cpp的編輯任務,並加入shared_objects_mongo_cpp;
編譯過程可能還需要-f pp.h中使用巨集宣告函數
6. 在mongo_cpp.cpp中 先在入口函數中註冊所有新增的函數; 再在檔案最後部分加入函數的定義。
7.. sudo make ; sudo make install;
到此/usr/local/php5/lib/php/extensions/no-debug-non-zts-20100525/下有了 8. 如果生成mongo_cpp.so中用到了其他so(即使用的是.a,本人不理解為什麼),執行前,要添加其路徑到LD_LIBRARY_PATH.
9.有些宏函數也要查資料,此處不敘述。