昨天手賤,在apt-get install 後有一大堆,上百個安裝包not upgrade, 發現有提示apt-get autoremove,猶豫了好久後仍是忍不住執行了autoremove;這個命令是帶着auto的,想着應該沒事。到網上搜羅下autoremove,嚇我一跳。。。php
而後這個debian,堅如磐石,從沒出過任何問題的OS,忽然沒網絡了,ifconfig下;eth0的網卡沒了,折騰了一兩個小時也沒恢復,想一想應該與我autoremove相關;python
哎,手賤。。。git
而後,幸運的發現我全部的與編程相關的都是獨立放在一塊虛擬硬盤上的,謝天謝地,還好還好。github
正好也是我把開發環境轉到64位的機會吧,而後把這個掛到debian64的機器下;從新部署安裝ice環境;編程
1 openssl的安裝網絡
sudo apt-get install libssl-dev
php7
這個命令後,頭文件部署最新的,會報BN_開頭的函數未定義;ide
若是使用openssl源碼編譯安裝,可是默認編譯生成的是靜態庫.a的(libcrypto.a, libssl.a),ice須要.so動態庫;函數
修改了幾回config文件沒生效,就用上面的apt-get命令獲得了動態庫ui
git clone --recursive https://github.com/openssl/openssl.git
cd ./openssl
make
sudo make install
#opensssl
sudo apt-get install libssl-dev
sudo cp /usr/local/ssl/include/openssl/ /usr/local/include/ -r
#bzip2 安裝
sudo apt-get install libbz2-dev
sudo apt-get install libexpat1-dev
sudo apt-get install liblmdb-dev
#for php,
sudo apt-get install python-dev
ICE 3.7如今只支持php5.6, 對php7.0有幾個函數參數不一致,還不能編譯
php7.0與ICE3.7編譯錯誤以下
berli@server:~/Dev/Ice/ice/php$ make making all in src make[1]: Entering directory '/home/berli/Dev/Ice/ice/php/src' making all in IcePHP make[2]: Entering directory '/home/berli/Dev/Ice/ice/php/src/IcePHP' g++ -c -I. -I../../../cpp/include -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -m64 -fvisibility=hidden -Wall -Werror -pthread -fPIC -g Communicator.cpp In file included from /usr/local/include/php/Zend/zend.h:39:0, from /usr/local/include/php/main/php.h:35, from ./Config.h:53, from ./Communicator.h:13, from Communicator.cpp:10: ./Util.h: In destructor ‘IcePHP::AutoDestroy::~AutoDestroy()’: /usr/local/include/php/Zend/zend_variables.h:122:76: error: cannot convert ‘zval** {aka _zval_struct**}’ to ‘zval* {aka _zval_struct*}’ for argument ‘1’ to ‘void _zval_ptr_dtor(zval*)’ #define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC) ^ ./Util.h:157:30: note: in expansion of macro ‘zval_ptr_dtor’ ~AutoDestroy() { if(_zv) zval_ptr_dtor(&_zv); } ^ Communicator.cpp: At global scope: Communicator.cpp:181:8: error: ‘zend_object_value’ does not name a type static zend_object_value handleAlloc(zend_class_entry* TSRMLS_DC); ^ Communicator.cpp:183:8: error: ‘zend_object_value’ does not name a type static zend_object_value handleClone(zval* TSRMLS_DC); ^ Communicator.cpp: In function ‘void zim_Ice_Communicator_proxyToString(zend_execute_data*, zval*)’: Communicator.cpp:285:10: error: ‘RETURN_STRINGL’ was not declared in this scope (RETURN_STRINGL)(STRCAST(str.c_str()), static_cast<int>(str.length()), 1); ^ Communicator.cpp: In function ‘void zim_Ice_Communicator_identityToString(zend_execute_data*, zval*)’: Communicator.cpp:418:10: error: ‘RETURN_STRINGL’ was not declared in this scope (RETURN_STRINGL)(STRCAST(str.c_str()), static_cast<int>(str.length()), 1); ^ Communicator.cpp: At global scope: Communicator.cpp:768:8: error: ‘zend_object_value’ does not name a type static zend_object_value ^ Communicator.cpp:797:8: error: ‘zend_object_value’ does not name a type static zend_object_value ^ In file included from /usr/local/include/php/main/php.h:39:0, from ./Config.h:53, from ./Communicator.h:13, from Communicator.cpp:10: Communicator.cpp: In function ‘void zif_Ice_initialize(zend_execute_data*, zval*)’: /usr/local/include/php/Zend/zend_API.h:258:59: error: cannot convert ‘zval*** {aka _zval_struct***}’ to ‘zval* {aka _zval_struct*}’ for argument ‘2’ to ‘int _zend_get_parameters_array_ex(int, zval*)’ _zend_get_parameters_array_ex(param_count, argument_array) ^ Communicator.cpp:901:8: note: in expansion of macro ‘zend_get_parameters_array_ex’ if(zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) ^ Communicator.cpp:923:29: error: ‘Z_TYPE_PP’ was not declared in this scope if(Z_TYPE_PP(args[0]) == IS_ARRAY) ^ Communicator.cpp:933:73: error: ‘Z_OBJCE_PP’ was not declared in this scope if(Z_TYPE_PP(args[1]) != IS_OBJECT || Z_OBJCE_PP(args[1]) != initClass) ^ Communicator.cpp:942:70: error: ‘Z_OBJCE_PP’ was not declared in this scope else if(Z_TYPE_PP(args[0]) == IS_OBJECT && Z_OBJCE_PP(args[0]) == initClass) ^ Communicator.cpp:965:116: error: cannot convert ‘char*’ to ‘zend_string* {aka _zend_string*}’ for argument ‘2’ to ‘zval* zend_hash_find(const HashTable*, zend_string*)’ if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data) == SUCCESS) ^ Communicator.cpp:975:116: error: cannot convert ‘char*’ to ‘zend_string* {aka _zend_string*}’ for argument ‘2’ to ‘zval* zend_hash_find(const HashTable*, zend_string*)’ if(zend_hash_find(Z_OBJPROP_P(zvinit), STRCAST(member.c_str()), static_cast<uint>(member.size() + 1), &data) == SUCCESS) ^ Communicator.cpp:993:37: error: ‘PZVAL_IS_REF’ was not declared in this scope if(zvargs && PZVAL_IS_REF(zvargs)) ^ Communicator.cpp: In function ‘bool IcePHP::communicatorInit()’: Communicator.cpp:1421:24: error: ‘handleAlloc’ was not declared in this scope ce.create_object = handleAlloc; ^ Communicator.cpp:1424:27: error: ‘handleClone’ was not declared in this scope _handlers.clone_obj = handleClone; ^ Communicator.cpp: In member function ‘virtual void IcePHP::CommunicatorInfoI::getZval(zval*)’: Communicator.cpp:1564:17: error: lvalue required as left operand of assignment Z_TYPE_P(z) = IS_OBJECT; ^ Communicator.cpp: In member function ‘virtual void IcePHP::CommunicatorInfoI::addRef()’: Communicator.cpp:1573:20: error: ‘const zend_object_handlers’ has no member named ‘add_ref’ Z_OBJ_HT_P(p)->add_ref(p TSRMLS_CC); ^ Communicator.cpp: In member function ‘virtual void IcePHP::CommunicatorInfoI::decRef()’: Communicator.cpp:1580:19: error: ‘const zend_object_handlers’ has no member named ‘del_ref’ Z_OBJ_HT(zv)->del_ref(p TSRMLS_CC); ^ Communicator.cpp: In member function ‘bool IcePHP::CommunicatorInfoI::findObjectFactory(const string&, zval*)’: Communicator.cpp:1636:22: error: ‘INIT_PZVAL’ was not declared in this scope INIT_PZVAL(zv); ^ Communicator.cpp: In member function ‘bool IcePHP::CommunicatorInfoI::findValueFactory(const string&, zval*)’: Communicator.cpp:1651:22: error: ‘INIT_PZVAL’ was not declared in this scope INIT_PZVAL(zv); ^ In file included from /usr/local/include/php/Zend/zend.h:39:0, from /usr/local/include/php/main/php.h:35, from ./Config.h:53, from ./Communicator.h:13, from Communicator.cpp:10: Communicator.cpp: In member function ‘void IcePHP::CommunicatorInfoI::destroyObjectFactories()’: /usr/local/include/php/Zend/zend_variables.h:122:76: error: cannot convert ‘_zval_struct**’ to ‘zval* {aka _zval_struct*}’ for argument ‘1’ to ‘void _zval_ptr_dtor(zval*)’ #define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC) ^ Communicator.cpp:1669:9: note: in expansion of macro ‘zval_ptr_dtor’ zval_ptr_dtor(&p->second); ^ Communicator.cpp: In member function ‘void IcePHP::CommunicatorInfoI::destroyValueFactories()’: /usr/local/include/php/Zend/zend_variables.h:122:76: error: cannot convert ‘_zval_struct**’ to ‘zval* {aka _zval_struct*}’ for argument ‘1’ to ‘void _zval_ptr_dtor(zval*)’ #define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC) ^ Communicator.cpp:1679:9: note: in expansion of macro ‘zval_ptr_dtor’ zval_ptr_dtor(&p->second); ^ Communicator.cpp: In member function ‘virtual Ice::ObjectPtr IcePHP::ObjectFactoryI::create(const string&)’: Communicator.cpp:1744:26: error: ‘MAKE_STD_ZVAL’ was not declared in this scope MAKE_STD_ZVAL(arg); ^ Communicator.cpp:1745:10: error: ‘ZVAL_STRINGL’ was not declared in this scope (ZVAL_STRINGL)(arg, STRCAST(id.c_str()), static_cast<int>(id.length()), 1); ^ Communicator.cpp:1752:128: error: cannot convert ‘zval** {aka _zval_struct**}’ to ‘zval* {aka _zval_struct*}’ for argument ‘1’ to ‘zval* zend_call_method(zval*, zend_class_entry*, zend_function**, const char*, size_t, zval*, int, zval*, zval*)’ zend_call_method(&factory, 0, 0, const_cast<char*>(func), static_cast<int>(strlen(func)), &obj, 1, arg, 0 TSRMLS_CC); ^ In file included from /usr/local/include/php/Zend/zend.h:39:0, from /usr/local/include/php/main/php.h:35, from ./Config.h:53, from ./Communicator.h:13, from Communicator.cpp:10: /usr/local/include/php/Zend/zend_variables.h:122:76: error: cannot convert ‘zval** {aka _zval_struct**}’ to ‘zval* {aka _zval_struct*}’ for argument ‘1’ to ‘void _zval_ptr_dtor(zval*)’ #define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC) ^ Communicator.cpp:1760:9: note: in expansion of macro ‘zval_ptr_dtor’ zval_ptr_dtor(&arg); ^ Communicator.cpp:1792:22: error: ‘MAKE_STD_ZVAL’ was not declared in this scope MAKE_STD_ZVAL(obj); ^ Communicator.cpp: At global scope: Communicator.cpp:786:1: error: ‘void handleFreeStorage(void*)’ defined but not used [-Werror=unused-function] handleFreeStorage(void* p TSRMLS_DC) ^ cc1plus: all warnings being treated as errors ../../config/Make.rules.php:161: recipe for target 'Communicator.o' failed make[2]: *** [Communicator.o] Error 1 make[2]: Leaving directory '/home/berli/Dev/Ice/ice/php/src/IcePHP' Makefile:17: recipe for target 'all' failed make[1]: *** [all] Error 1 make[1]: Leaving directory '/home/berli/Dev/Ice/ice/php/src' Makefile:34: recipe for target 'all' failed make: *** [all] Error 1
http://prdownloads.sourceforge.net/mcpp/mcpp-2.7.2.tar.gz?download
tar xvf mcpp-2.7.2.tar.gz cd mcpp-2.7.2 patch -p0 < ../mcpp/patch.mcpp.2.7.2 ./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared make && make install #2) 安裝BerkeleyDB tar db-5.3.21.NC.tar.gz cd db-5.3.21.NC patch -p0 < ../db/patch.db.5.3.21 cd build_unix ../dist/configure --enable-cxx make && make install