我的电脑是 Ubuntu 14.04 LTS, 自己手工编译 php5.6, 打开 ZEND_EXTRA_LIBS='-liconv' 时, 发现没有安装 libiconv, 也就是编码转换的库, 所以百度该库的安装方法, 如下:

下载:

$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

解压:

$ tar -zxvf libiconv-1.14.tar.gz
$ cd libiconv-1.14.1

安装:

$ ./configure --prefix=/usr/local
$ make
# make install

不过我make的时候出现了一个问题:

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目录下:

$ cd srclib

修改stdio.in.h文件:

$ gedit 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, 改完是这个样子滴别忘了保存

#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

记下来, 下次就不会忘记了~


文章来源于本人博客,发布于 2015-07-11,原文链接:https://imlht.com/archives/62/

Linux下手工编译libiconv库的小问题的更多相关文章

  1. Linux 下 GCC 编译共享库控制导出函数的方法

    通过一些实际项目的开发,发现这样一个现象,在 Windows 下可以通过指定 __declspec(dllexport) 定义来控制 DLL(动态链接库)中哪些函数可以导出,暴露给其他程序链接使用,哪 ...

  2. [转]Linux下g++编译与使用静态库(.a)和动态库(.os) (+修正与解释)

    在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库 ...

  3. LINUX下文件编译

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  4. ACE-6.1.0 linux 下的编译与安装步骤

    ACE-6.1.0 linux 下的编译与安装步骤  引用至http://www.cnblogs.com/liangxiaxu/archive/2013/03/07/2948417.html 1.从  ...

  5. FFmpeg在Linux下安装编译过程

    转载请把头部出处链接和尾部二维码一起转载,本文出自:http://blog.csdn.net/hejjunlin/article/details/52402759 今天介绍下FFmpeg在Linux下 ...

  6. Linux下nginx编译安装教程和编译参数详解

    这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # y ...

  7. 常见的LINUX发行版安装libiconv库方法

    今天编译程序,发现程序报错,如下 cannot find -liconv collect2: ld returned 1 exit status 或者 undefined reference to ` ...

  8. 从四个问题透析Linux下C++编译&链接

    摘要:编译&链接对C&C++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译&链接过程,陌生在于大部分人并不会刻意关注编译&链接的原理.本文通过开发过程中碰到的四个典型 ...

  9. linux下live555编译和调试

    linux下live555编译和调试 live555 支持 h.264 初步告捷,可以播放,尽管不是很稳定,或者说暂时只能播放 1 帧(主要是我现在还不了解 帧的概念),同时还有 Mal SDP 的传 ...

  10. linux下将编译错误输出到一个文本文件

    linux下将编译错误输出到一个文本文件 command > filename 把把标准输出重定向到一个新文件中 command > > filename 把把标准输出重定向到一个文 ...

随机推荐

  1. 【ACM组合数学 | 错排公式】写信

    题目链接:https://ac.nowcoder.com/acm/contest/54484/B 题意很简单,但是数据范围偏大. 错排公式 首先来推导一下错排公式: \[D(n) = n!\sum_{ ...

  2. 18-html压缩

    const { resolve } = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); modul ...

  3. MySQL-带你上官网看索引

    在我之前的一篇文章中,有引用一个讨论用Hash还是Tree的问题,DB中关于查找类数据结构,除了树,还有Hash(HashMap,HashSet). 存储数据结构之争 B+树主要是照顾磁盘IO这种特殊 ...

  4. windows查看占用端口

    1. 查看占用 执行:netstat -ano 或者 netstat -aon|findstr 8080 2. 查看指定 PID 的进程 tasklist|findstr 3104 3. 结束进程 t ...

  5. Rust中的函数指针

    什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数.函数的类型是 fn (使用小写的 "f" )以免与 Fn 闭包 trait 相混淆.fn 被称为 函数指针(fun ...

  6. Grafana 系列-统一展示-3-Prometheus 仪表板

    系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节,如 server.app 和 pod_name 在 metr ...

  7. 2020-10-24:go中channel的recv流程是什么?

    福哥答案2020-10-24: ***[评论](https://user.qzone.qq.com/3182319461/blog/1603496305)

  8. Django django-rest-framework-simplejwt

    Django(75)django-rest-framework-simplejwt「建议收藏」 发布于2022-09-16 11:56:13阅读 2440   大家好,又见面了,我是你们的朋友全栈君. ...

  9. ERRORS: app1.Book.photo: (fields.E210) Cannot use ImageField because Pillow is not installed.

    报错: (env) E:\pyAPP\mybook>python manage.py makemigrations SystemCheckError: System check identifi ...

  10. 研究NIST 800-53B信息系统和组织的控制基线

    简介 800-53B是800-53的定制版本.为低.中.高影响的系统提供了安全与隐私控制手段.对于所有企业,定制控制手段不是强制的,必须的,可以参考NIST SP 800-37(800-37)提供了关 ...