mac下为php添加UUID扩展不成功的解决方案

来源:互联网 发布:天气在线软件下载 编辑:程序博客网 时间:2024/05/22 08:10

将下载好的uuid扩展下载下来,下载地址


下载后之后编译会不成功,会出现

use of undeclared identifier 'UUID_TYPE_DCE_TIME'

这样的错误


解决办法,因为不知道如何上传文件,这里先简单写一下如何修改,等以后研究好了如何上传文件后将修改后的文件上传上来。

修改未编译前的几个文件,第一个修改config.m4文件:

在第10行:PHP_CHECK_FUNC_LIB(uuid_variant, uuid)后面添加两行内容

   PHP_CHECK_FUNC_LIB(uuid_time, uuid)
   PHP_CHECK_FUNC_LIB(uuid_mac, uuid)

删除第18行之后的下面两行内容:

PHP_SUBST(UUID_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/lib, UUID_SHARED_LIBADD)
然后添加下面几行内容:
  AC_MSG_CHECKING(PHP version)  AC_TRY_COMPILE([], [#ifdef __APPLE__#error compiling on darwin#endif],[],[export UUID_ON_MAC=true])  if test $UUID_ON_MAC != "true"; then    PHP_SUBST(UUID_SHARED_LIBADD)    PHP_ADD_LIBRARY_WITH_PATH(uuid, $PHP_UUID_DIR/lib, UUID_SHARED_LIBADD)  fi
最后删除如下一行内容:
PHP_SUBST(UUID_SHARED_LIBADD)
第二个文件为php_uuid.h做如下修改
在PHP_FUNCTION(uuid_time);这一段内容之前添加如下内容
  #if HAVE_UUID_TIME
在这一段内容之后添加如下内容
#endif /* HAVE_UUID_TIME */
在PHP_FUNCTION(uuid_mac);这一块内容之前和最后添加分别添加下面两行:
#if HAVE_UUID_MAC#endif /* HAVE_UUID_MAC */
 PHP_FUNCTION(uuid_parse); #if (PHP_MAJOR_VERSION >= 5)@@ -185,6 +190,15 @@ ZEND_END_ARG_INFO() } // extern "C"  #endif
这段之后添加添加下面一段内容:
#ifndef UUID_TYPE_DCE_TIME#ifdef __APPLE__/* UUID Type definitions */#define UUID_TYPE_DCE_TIME   1#define UUID_TYPE_DCE_RANDOM 4#endif /* __MACOS__ */#endif /* UUID_TYPE_DCE_TIME */
最后将#endif /* PHP_HAVE_UUID */改为#endif /* HAVE_UUID */

第三个文件tests/uuid_mac.phpt修改为
--TEST--uuid_mac() function--SKIPIF--<?php if(!extension_loaded('uuid')) die('skip ');if(!function_exists('uuid_mac')) die('skip not compiled in (HAVE_UUID_MAC)'); ?>--FILE--<?phpvar_dump(uuid_mac("b691c99c-7fc5-11d8-9fa8-00065b896488"));var_dump(uuid_mac("878b258c-a9f1-467c-8e1d-47d79ca2c01b"));?>--EXPECT--string(12) "00065b896488"bool(false)
第四个文件tests/uuid_time.phpt修改为
--TEST--uuid_time() function--SKIPIF--<?php if(!extension_loaded('uuid')) die('skip ');if(!function_exists('uuid_time')) die('skip not compiled in (HAVE_UUID_TIME)'); ?>--FILE--<?phpvar_dump(uuid_time("b691c99c-7fc5-11d8-9fa8-00065b896488"));var_dump(uuid_time("878b258c-a9f1-467c-8e1d-47d79ca2c01b"));?>--EXPECT--int(1080374815)bool(false)
第五个文件uuid.c将uuid_functions修改为
zend_function_entry uuid_functions[] = {PHP_FE(uuid_create         , uuid_create_arg_info)PHP_FE(uuid_is_valid       , uuid_is_valid_arg_info)PHP_FE(uuid_compare        , uuid_compare_arg_info)PHP_FE(uuid_is_null        , uuid_is_null_arg_info)#if HAVE_UUID_TYPEPHP_FE(uuid_type           , uuid_type_arg_info)#endif /* HAVE_UUID_TYPE */#if HAVE_UUID_VARIANTPHP_FE(uuid_variant        , uuid_variant_arg_info)#endif /* HAVE_UUID_VARIANT */#if HAVE_UUID_TIMEPHP_FE(uuid_time           , uuid_time_arg_info)#endif /* HAVE_UUID_TIME */#if HAVE_UUID_MACPHP_FE(uuid_mac            , uuid_mac_arg_info)#endif /* HAVE_UUID_MAC */PHP_FE(uuid_parse          , uuid_parse_arg_info)PHP_FE(uuid_unparse        , uuid_unparse_arg_info){ NULL, NULL, NULL }};

0 0
原创粉丝点击