包的下载页面http://www.gnu.org/software/libiconv/
$ ./configure --prefix=/usr/local $ make $ make install 出现 error: ‘gets’ undeclared here (not in a function) 错误, 解决办法 1.
- wget -c http://www.itkb.ro/userfiles/file/libiconv-glibc-2.16.patch.gz
- cd libiconv-1.14/srclib
- patch -p1 stdio.in.h
这个补丁的内容如下
- --- srclib/stdio.in.h.orig 2011-08-07 16:42:06.000000000 +0300
- +++ srclib/stdio.in.h 2013-01-10 15:53:03.000000000 +0200
- @@ -695,7 +695,9 @@
- /* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
- -_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
- +#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
- + _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
- +#endif
#endif第二种 改
libiconv-1.14/srclib/stdio.in.h在stdio.in.h中找到 //_GL_WARN_ON_USE (gets, "gets is a securityhole - use fgets instead");
修改为:
#if defined(__GLIBC__) &&!defined(__UCLIBC__) &&!__GLIBC_PREREQ(2, 16) _GL_WARN_ON_USE (gets, "gets is a security hole -use fgets instead"); #endif