我的电脑是 Ubuntu 14.04 LTS
, 自己手工编译 php5.6
, 打开 ZEND_EXTRA_LIBS='-liconv'
时, 发现没有安装 libiconv
, 也就是编码转换的库, 所以百度该库的安装方法, 如下:
下载:
代码语言:shell复制$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
解压:
代码语言:shell复制$ tar -zxvf libiconv-1.14.tar.gz
$ cd libiconv-1.14.1
<!--more-->
安装:
代码语言:shell复制$ ./configure --prefix=/usr/local
$ make
# make install
不过我make的时候出现了一个问题:
代码语言:txt复制n file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/freeman/Downloads/libiconv-1.14_2/srclib'
make: *** [all] Error 2
原因未明, 应该是软件的bug吧, 后来百度找到了 解决方法, 整理如下~
切换到srclib目录下:
代码语言:shell复制$ cd srclib
修改stdio.in.h文件:
代码语言:shell复制$ gedit stdio.in.h
定位到
代码语言:txt复制_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
这一行, 改成:
代码语言:c复制#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
注意粘贴完下面有两行 #endif, 别少复制了一行 #endif, 改完是这个样子滴~别忘了保存~
代码语言:c复制#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
#endif
#endif
保存, make
就可以了, make install
完别忘了
# ldconfig
记下来, 下次就不会忘记了~