hp编译时 出现configure: error: libjpeg.(a|so) not found 错误的解决办法

解决CentOS6编译安装PHP时libjpeg.so未找到问题
在CentOS6系统下编译安装PHP时遇到configure错误提示libjpeg.so未找到,通过修改链接路径成功解决。

hp编译时 出现configure: error: libjpeg.(a|so) not found 错误的解决办法



在centos 6系统下编译安装PHP时,有以下错误, centos 5 好像没有

checking for GD support... yes

checking for the location of libjpeg... yes

checking for the location of libpng... no

checking for the location of libXpm... no

checking for FreeType 1.x support... no

checking for FreeType 2... yes

checking for T1lib support... no

checking whether to enable truetype string function in GD... no

checking whether to enable JIS-mapped Japanese font support in GD... no

checking for fabsf... yes

checking for floorf... yes

configure: error: libjpeg.(a|so) not found.


locate之后发现已经安装了libjpeg了,但是在/usr/lib目录下没有libjpeg.so这个文件,在/usr/lib64下是有的,虽然使用–with-jpeg-dir=/usr/lib64 依然无效,最后用

ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so
问题解决, libpng 报的错误解决方法一样文章来自:http://www.thisme.biz/php-configure-error-libjpeg-aso-not-found
<think>我们正在解决Linux系统中出现的共享库缺失问题,具体是`libjpeg.so.9`无法加载。根据用户提供的引用[1]和引用[2],我们可以获得一些线索:引用[1]提到了安装一些开发工具和库的命令,其中包括`libjpeg-devel`,这可能是安装`libjpeg`库的开发包。引用[2]则介绍了使用`ldd`检查依赖,以及解决丢失文件的方法,并提到了安全注意事项。解决思路:1.确认系统中是否安装了包含`libjpeg.so.9`的库。2.如果没有安装,则安装相应的包。3.如果已经安装但找不到,可能是路径问题,需要调整链接或环境变量。具体步骤:步骤1:使用`ldd`检查可执行文件(或动态库)的依赖,确认`libjpeg.so.9`的缺失情况。例如:`ldd/path/to/your/program|greplibjpeg`如果输出中包含`libjpeg.so.9=>notfound`,则确实缺失。步骤2:查找系统中是否已经存在`libjpeg.so.9`,但可能不在链接目录中。可以使用以下命令搜索:`sudofind/-name"libjpeg.so.9*"2>/dev/null`步骤3:如果找到了该文件,我们可以创建一个符号链接到系统库目录(如`/usr/lib`或`/usr/lib64`)或者将包含该库的目录添加到`LD_LIBRARY_PATH`环境变量中。但是,更推荐的方法是使用符号链接到标准库目录,因为环境变量设置可能不够持久。例如,假设在`/usr/local/lib`下找到了`libjpeg.so.9.0.0`,则可以:`sudoln-s/usr/local/lib/libjpeg.so.9.0.0/usr/lib64/libjpeg.so.9`注意:根据系统架构,库目录可能是`/usr/lib`(32位)或`/usr/lib64`(64位)。请根据实际情况选择。步骤4:如果系统中没有安装该库,则需要安装相应的软件包。根据不同的Linux发行版,安装命令可能不同。对于基于RPM的系统(如CentOS):我们可以尝试安装`libjpeg`或`libjpeg-turbo`等包。根据引用[1]中的提示,我们可以先安装`libjpeg-devel`(开发包通常包含运行时库):`sudoyuminstalllibjpeg-turbo-devel`#或者`libjpeg-devel`注意:不同版本的库可能提供不同版本的so文件。我们需要确认安装的包是否包含`libjpeg.so.9`。对于基于Debian的系统(如Ubuntu):`sudoapt-getinstalllibjpeg9`#或者尝试`libjpeg62`等,具体看仓库中是否有版本9的包如果官方仓库中没有提供`libjpeg.so.9`,可能需要从源代码编译安装,或者寻找第三方仓库。步骤5:安装完成后,再次运行`ldd`检查是否解决。步骤6:如果上述方法都不能解决,可能需要重新编译程序,使其链接到系统中存在的库版本。注意事项:引用[2]中提醒,不要对非信任文件使用`ldd`,因为会执行文件中的代码。我们可以使用`objdump`或`readelf`来查看依赖:`objdump-p/path/to/program|grepNEEDED``readelf-d/path/to/program|grepShared`根据用户的问题,我们主要参考了引用[1]中安装库的方法和引用[2]中诊断问题的方法。下面给出具体的解决步骤:1.首先检查系统中是否已安装`libjpeg.so.9`:`find/usr/lib*/lib*-name"libjpeg.so.9*"2>/dev/null`2.如果找到,则创建符号链接(如果需要):例如,找到`/usr/lib/libjpeg.so.9.0.0`,但程序在`/usr/lib64`下查找,则可以:`sudoln-s/usr/lib/libjpeg.so.9.0.0/usr/lib64/libjpeg.so.9`3.如果未找到,尝试安装:CentOS/RHEL:`sudoyuminstallepel-release`#如果未安装EPEL仓库,先安装(有些包在EPEL中)`sudoyuminstalllibjpeg-turbo-devel`#或者尝试`libjpeg-devel`Ubuntu/Debian:`sudoapt-getupdate``sudoapt-getinstalllibjpeg9`#或者`libjpeg62`,具体包名可能不同4.如果仓库中没有,考虑从源码编译:下载源码(例如从http://www.ijg.org/),然后编译安装:```wgethttp://www.ijg.org/files/jpegsrc.v9.tar.gztarxvfjpegsrc.v9.tar.gzcdjpeg-9./configuremakesudomakeinstall```默认安装路径可能是`/usr/local/lib`,此时需要将`/usr/local/lib`加入`/etc/ld.so.conf`并运行`sudoldconfig`,或者创建符号链接到标准库目录。5.更新动态库缓存:在安装库或创建符号链接后,运行:`sudoldconfig`6.再次检查程序依赖:`ldd/path/to/your/program`如果问题仍然存在,请检查程序是否要求特定版本的`libjpeg`(如9.x.x的特定次版本),并确保安装的版本符合要求。相关问题:1.如何查看Linux系统中已安装的共享库?2.动态库链接失败的其他常见原因有哪些?3.如何设置`LD_LIBRARY_PATH`环境变量?它有什么优缺点?</think>### 解决 libjpeg.so.9 无法加载的问题 当 Linux 系统提示 `error while loading shared libraries: libjpeg.so.9` 时,表明动态链接器无法找到该共享库。以下是系统级的解决步骤: #### 1. **验证库是否存在** ```bash # 搜索系统中是否已安装 libjpeg.so.9 sudo find / -name 'libjpeg.so.9*' 2>/dev/null ``` - **如果找到**:记录路径(如 `/usr/local/lib/libjpeg.so.9.0.0`) - **如果未找到**:需安装或编译该库(跳至步骤3) #### 2. **修复库链接(若库已存在)** ```bash # 添加库路径到链接器配置 echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libjpeg.conf sudo ldconfig # 更新链接器缓存 # 验证是否识别 ldconfig -p | grep libjpeg.so.9 ``` #### 3. **安装/编译 libjpeg.so.9** - **通过包管理器安装**: ```bash # CentOS/RHEL sudo yum install libjpeg-turbo-devel # 或从源码编译 # Ubuntu/Debian sudo apt-get install libjpeg9-dev ``` - **手动编译安装**(适用于无官方包的情况): ```bash wget http://www.ijg.org/files/jpegsrc.v9.tar.gz tar xvf jpegsrc.v9.tar.gz cd jpeg-9 ./configure --prefix=/usr/local make sudo make install sudo ldconfig # 更新链接器缓存 ``` #### 4. **应急解决方案** - **临时环境变量**(不推荐长期使用): ```bash export LD_LIBRARY_PATH=/path/to/libjpeg_dir:$LD_LIBRARY_PATH ``` - **强制符号链接**: ```bash sudo ln -s /path/to/libjpeg.so.9.0.0 /usr/lib/libjpeg.so.9 sudo ldconfig ``` #### 5. **验证修复结果** ```bash ldd /path/to/your_program | grep libjpeg.so.9 ``` 预期输出应显示库路径,而非 `not found`。 > **关键提示**: > - 优先使用包管理器安装(如 `yum` 或 `apt`),避免手动编译的兼容性问题[^1]。 > - 操作后务必执行 `sudo ldconfig` 刷新缓存[^2]。 > - 避免直接运行 `ldd` 不可信文件,可用 `objdump -p 文件 | grep NEEDED` 替代[^2]。 --- ### 相关问题 1. **如何诊断 Linux 动态库加载失败的其他原因?** (涉及 `strace` 跟踪系统调用、`LD_DEBUG` 环境变量调试) 2. **不同 Linux 发行版管理共享库的最佳实践有哪些差异?** (对比 Ubuntu 的 `apt`、CentOS 的 `yum`、Arch 的 `pacman`) 3. **如何安全编译软件以兼容旧版共享库?** (使用容器化方案 vs 修改编译器的 `-rpath` 参数) 4. **动态库版本冲突(如 libjpeg.so.8 与 libjpeg.so.9)如何解决?** (探讨符号链接优先级、容器隔离方案) [^1]: 引用包管理命令示例:`sudo yum install cmake git libpng-devel libjpeg-devel...` [^2]: 引用诊断工具注意事项:`ldd` 的安全替代方案及 `strace` 用法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值