1. 程式人生 > >解決編譯libiconv時報錯:./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)

解決編譯libiconv時報錯:./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)

轉載自:http://forum.z27315.com/topic/15662-%E8%A7%A3%E5%86%B3%E7%BC%96%E8%AF%91libiconv%E6%97%B6%E7%9A%8439gets39-undeclared-here%E9%94%99%E8%AF%AF/

在編譯libiconv時出錯

./stdio.h:1010:1: error: 'gets' undeclared here (not in a function)

下面報

make[2]: *** [progname.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: Leaving directory `/opt/sources/libiconv-1.14/srclib' make[1]: *** [all] Error 2 make[1]: Leaving directory `/opt/sources/libiconv-1.14/srclib' make: *** [all] Error 2
wget -c http://www.itkb.ro/userfiles/file/libiconv-glibc-2.16.patch.gz
cd libiconv-1.14/srclib
patch -p1 stdio.in.h

俺執行patch後好久都沒有反應 :( 最後人肉修改

這個補丁的內容如下

--- 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