一、实验报错如下:
make[2]: Entering directory `/home/chen/tools/libiconv-1.14/srclib'
make[3]: Entering directory `/home/chen/tools/libiconv-1.14'
make[3]: Nothing to be done for `am--refresh'.
make[3]: Leaving directory `/home/chen/tools/libiconv-1.14'
gcc -DHAVE_CONFIG_H -DEXEEXT=\"\" -I. -I.. -I../lib -I../intl -DDEPENDS_ON_LIBICONV=1 -DDEPENDS_ON_LIBINTL=1 -g -O2 -c progname.c
In file included from progname.c:26:0:
./stdio.h:1010:2: error: invalid preprocessing directive #_GL_WARN_ON_USE
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
make[2]: *** [progname.o] Error 1font
make[2]: Leaving directory `/home/chen/tools/libiconv-1.14/srclib'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/chen/tools/libiconv-1.14/srclib'
make: *** [all] Error 2
二、解决方法
编辑/home/chen/tools/libiconv-1.14/srclib下的stdio.in.h,找到如下代码:
_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
注意:上面为两个#endif保存退出,重新编译。
make && make install