菜鸟解决php编译时出错error: mcrypt.h not found. Please reinstall libmcrypt

回复 收藏
系统:64位。  php版本:php-5.4.37
1.首先报错的是:jpeglib.h not found 这很多人报错吧。


2.[root@sean ~]# yum list | grep 'jpeglib' 根本找不到。
3.[root@sean ~]# yum list | grep 'libjpeg'
libjpeg-turbo.x86_64                           1.2.1-3.el6_5                @anaconda-CentOS-201508042137.x86_64/6.7
libjpeg-turbo-devel.x86_64                     1.2.1-3.el6_5                @base
libjpeg-turbo.i686                             1.2.1-3.el6_5                base
libjpeg-turbo-devel.i686                       1.2.1-3.el6_5                base
libjpeg-turbo-static.x86_64                    1.2.1-3.el6_5                base
为什么找'libjpeg'?我是看了12期-马黎阳 的帖子。问他从那里知道的依赖关系,他解释的没有说服力。但是搜的是对的。高手的想法我们不懂。32位和64位自己把握好。@部分就是要装的。怎么装就不说了,都会。
到这里有些人./congfiguer 就OK了。但是我这出现了error: mcrypt.h not found. Please reinstall libmcrypt
百度上解释说这个包 不是开源的。so系统没有。没有就找第三方  libmcrypt,  mhash,  mcrypt 这三个包有依赖关系,很多人就讲解这三个包下载、编译等等,相当复杂。但没下载地址,为什么那麽做都没讲。对于我们这种菜鸟没法搞。所以我的想法就是搞个包。能同时解决依赖关系。百度里找了好多。要麽不能下载。可能过期了。要么不能解压如:
[root@sean ~]# tar xf  libmcrypt-2.5.8.tar.gz
tar: 它似乎不像是一个 tar 归档文件


gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

[root@sean ~]# tar zxvf libmcrypt-2.5.8.tar.gz

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
其实试过多种解压方法,都不能解压。到现在也没明白,具体不说了。
4.[root@sean ~]# rpm -Uvh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
这个地址是 (广州-陈龙飞)告诉我的,来自14期-谢泽鹏 帖子 。感谢他们2个。所以我也才想到把我的安装过程共享出来给大家。
5.[root@sean ~]# yum install -y libmcrypt-devel(只要安装这就行了,下面的是显示的过程,为了给你们看到整个过程)
已加载插件:fastestmirror, verify
设置安装进程
Loading mirror speeds from cached hostfile
epel/metalink                                            | 4.9 kB     00:00
* base: mirror.bit.edu.cn
* epel: ftp.cuhk.edu.hk
* extras: mirrors.yun-idc.com
* updates: mirrors.sina.cn
epel                                                     | 4.3 kB     00:00
epel/primary_db                                          | 5.8 MB     00:04
解决依赖关系
--> 执行事务检查
---> Package libmcrypt-devel.x86_64 0:2.5.8-9.el6 will be 安装
--> 处理依赖关系 libmcrypt = 2.5.8-9.el6,它被软件包 libmcrypt-devel-2.5.8-9.el6.x86_64 需要
--> 处理依赖关系 libmcrypt.so.4()(64bit),它被软件包 libmcrypt-devel-2.5.8-9.el6.x86_64 需要
--> 执行事务检查
---> Package libmcrypt.x86_64 0:2.5.8-9.el6 will be 安装
--> 完成依赖关系计算


依赖关系解决


================================================================================
软件包                  架构           版本                 仓库          大小
================================================================================
正在安装:
libmcrypt-devel         x86_64         2.5.8-9.el6          epel          12 k
为依赖而安装:
libmcrypt               x86_64         2.5.8-9.el6          epel          96 k


事务概要
================================================================================
Install       2 Package(s)


总下载量:108 k
Installed size: 299 k
下载软件包:
(1/2): libmcrypt-2.5.8-9.el6.x86_64.rpm                  |  96 kB     00:00
(2/2): libmcrypt-devel-2.5.8-9.el6.x86_64.rpm            |  12 kB     00:00
--------------------------------------------------------------------------------
总计                                            491 kB/s | 108 kB     00:00
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Importing GPG key 0x0608B895:
Userid : EPEL (6) <epel@fedoraproject.org>
Package: epel-release-6-8.noarch (installed)
From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.
  正在安装   : libmcrypt-2.5.8-9.el6.x86_64                                 1/2
  正在安装   : libmcrypt-devel-2.5.8-9.el6.x86_64                           2/2
  Verifying  : libmcrypt-2.5.8-9.el6.x86_64                                 1/2
  Verifying  : libmcrypt-devel-2.5.8-9.el6.x86_64                           2/2


已安装:
  libmcrypt-devel.x86_64 0:2.5.8-9.el6


作为依赖被安装:
  libmcrypt.x86_64 0:2.5.8-9.el6


完毕!

6.在次 ./configuer
........过程省略
[root@sean php-5.4.37]# echo $?
0


查看成功。 是不是很简单?没有像网上或我们论坛里其他的帖子那麽复杂。很适合我们这些菜鸟。当然这也许不能解决你的问题。但是最重要的那个第三方包解决了,其他相应就好办多了。
余下的问题有2个:1.为什么要搜'libjpeg'。2.为什么我自己下的那个包不能解压。(新的问题。想知道的可以扩展下,高手也可以回帖解释下)欢迎指点~!
                                 -end-

2016-06-03 22:42 举报
已邀请:
0

maria

赞同来自:

在这给你回复几个问题。
1、需要安装32位和64位是yum工具自己决定的,当然如果你的系统是32位的,根本就搜不到64位的包的。所以用yum安装的时候只需要指定包名就可以了,除非是你在64位系统上要安装的应用特别指明需要32位的,才需要指定位数。
2、我的安装顺序跟你的并不一样,我是先安装了你后面的几个,最后安装的libjpeg。原因很简单,因为我是看完视频然后照着书做的,书上只是写了,后面的这些依赖都有说到,所以我在编译之前就已经全部安装了,之后jpeglib这个依赖书上没有提到,所以我编译的时候会报错,这也是你开头说的很多人只安装了这一个包就编译通过了的原因。
3、你下载的那个压缩包解压不成功的原因很可能是包损坏了。不过即使你的包是正确的。我不建议你这样去解决依赖关系,因为你编译安装libmcrypt的时候还会有其他依赖。解决这些依赖可能还出现其他依赖了。对于初学者来说这是极其奔溃的事情,所以如果yum安装能解决的问题,尽量不要自己编译(我说的是依赖的包,你的应用工具当然还是自己编译的要好一些)
4、你帖子开头说的带有@的是要安装的,这个说法是有问题的。在用yum list查找包的时候,带有@的说明是你系统中已经安装过了的包
5、关于为什么搜libjpeg,我的帖子里已经给你回复了,不知道你看了没有,我这里再说一下吧。我当时确实和你一样,开始搜的是jpeglib,没有结果,然后我又搜了jpeg,出来的结果有libjpeg,openjpeg,turbojpeg,所以我选择安装了libjpeg,原因嘛很简单,因为长得比较像,哈哈。然后尝试编译,通过了。我才到论坛里发了那篇帖子,所以我在帖子里直接演示的是搜索libjpeg。
我不是什么高手,只是学的比你稍微早一点,大家一起探讨。
0

Sean.Yuan

赞同来自:

本帖最后由 Sean.Yuan 于 2016-6-4 14:19 编辑
maria 发表于 2016-6-4 11:41
在这给你回复几个问题。
1、需要安装32位和64位是yum工具自己决定的,当然如果你的系统是32位的,根本就搜 ...

谢谢你再次解释,我了解了,你表示运气成分。
其实我也分开搜过。但我就不晓得应该去试试用那一个。因为搜的字符越少。相应的包就越多。你的觉得比较像,其实是你知识的积累的很丰富。表象的运气实则是建立在大量知识之上。你谦虚了。
还有就是我所说的@是要安装的。意思是,这2种包是必须安装的,而不是你理解的打了@符号才是要安装的。至于他要装32位或64位要根据自己的情况而定。有@肯定就是装过的,视频里有教过,一般人应该都是知道的。当然他有,再装也装不上了。
还有,我觉得第三方的包的确不好找,可能是我太菜吧

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: