Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or dir

简介:

Linux 有问必答:如何在Linux中修复“fatal error: lame/lame.h: No such file or dir

提问: 我尝试着在Linux中编译视频编码器,但是编译提示出错:“fatal error: lame/lame.h: No such file or directory”, 我该如何修复这个错误?

下面的编译错误说明你的系统没有安装LAME库和它的开发文件。


  
  
  1. fatal error: lame/lame.h: No such file or directory

LAME("LAME Ain't an MP3 Encoder")是一个流行的LPGL授权的MP3编码器。许多视频编码工具使用或者支持LAME,如 FFmpeg、 VLC、 Audacity、 K3b、 RipperX等。

要修复这个编译错误,你需要安装LAME库和开发文件,按照下面的来。

在Debian、Ubuntu或者Linux Mint上安装LAME库和安装文件

Debian和它的衍生版在基础库中已经提供了LAME库,因此可以用apt-get直接安装。


  
  
  1. $ sudo apt-get install libmp3lame-dev

在Fedora、CentOS/RHEL上安装LAME库和安装文件

在基于RED HAT的版本中,LAME在RPM Fusion的免费仓库中就有,那么你需要先设置RPM Fusion (免费)仓库

RPM Fusion设置完成后,如下安装LAME开发包。


  
  
  1. $ sudo yum --enablerepo=rpmfusion-free-updates install lame-devel

在2015年1月,RPM Fusion仓库已经不可以在CentOS/RHEL 7中可用了。因此,这个方法不能用在CentOS/RHEL 7 中。这时你就要从源码安装LAME库了(下面会描述)。

在Debian、Ubuntu或者Linux Mint中从源码编译LAME库

如果你希望用不同的编译选项安装自定义的LAME库,你需要自己编译。下面是怎样在基于Debian的系统中编译和安装LAME库(和它的头文件)。


  
  
  1. $ sudo apt-get install gcc git
  2. $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
  3. $ tar -xzf lame-3.99.5.tar.gz
  4. $ cd lame-3.99.5
  5. $ ./configure --enable-static --enable-shared
  6. $ make
  7. $ sudo make install

注意当你运行上面的配置步骤时,你可以根据你的需求启用会禁止不同的选项。运行下面的命令查看不同的编译选项。


  
  
  1. $ ./configure --help

共享/静态的LAME库默认安装在 /usr/local/lib。要让共享库可以被其他程序使用,完成最后一步:

用编辑器打开 /etc/ld.so.conf,加入下面这行。


  
  
  1. /usr/local/lib

接着运行下面的命令,这会将/usr/local/lib中的共享库添加到动态加载缓存中,因此LAME库就可以被其他程序调用了。


  
  
  1. $ sudo ldconfig

在Fedora或者CentOS/RHEL中从源码编译LAME库

如果你的发行版(比如 CentOS 7)没有提供预编译的LAME库,或者你想要自定义LAME库,你需要从源码自己编译。下面是在基于Red Hat的系统中编译安装LAME库的方法。


  
  
  1. $ sudo yum install gcc git
  2. $ wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
  3. $ tar -xzf lame-3.99.5.tar.gz
  4. $ cd lame-3.99.5
  5. $ ./configure --enable-static --enable-shared
  6. $ make
  7. $ sudo make install

运行make之前,你可以在configure中带上合适的选项自定义编译选项。你可以用下面的命令检查可用的选项:


  
  
  1. $ ./configure --help

最后你需要完成最后一步,因为安装在/usr/local/lib的LAME共享库可能在其他程序中不可用。

在/etc/ld.so.conf中添加下面这行:


  
  
  1. /usr/local/lib

接着运行下面的命令。这会添加 /usr/local/lib中的共享库(包括LAME)到动态加载缓存中,让其他程序可以访问到。


  
  
  1. $ sudo ldconfig

原文发布时间:2015-04-26

本文来自云栖合作伙伴“linux中国”
目录
相关文章
|
2月前
|
存储 安全 Linux
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
3月前
|
Docker 容器
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
14 response from daemon: open \\.\pipe\docker_engine_linux: The system cannot find the file speci
41 1
|
4月前
|
Ubuntu Linux 编译器
在ubantu/linux系统出现parse error(语法错误)
本文讨论了在Ubuntu/Linux系统中遇到"parse error"(语法错误)的问题,并提供了将非声明语句移动到所有声明语句下方以解决该问题的解决方案。
在ubantu/linux系统出现parse error(语法错误)
|
4月前
|
监控 Linux
在Linux中,如何创建、检查和修复文件系统?
在Linux中,如何创建、检查和修复文件系统?
|
3月前
|
Linux
Linux内核的异常修复原理
Linux内核的异常修复原理
|
4月前
|
Java Linux Shell
【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题
【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题
|
4月前
|
存储 Linux Shell
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
|
4月前
|
监控 Linux
在Linux中,如何检测并修复/dev/hda5?
在Linux中,如何检测并修复/dev/hda5?
|
Ubuntu Linux iOS开发
Calibre的Linux安装error:libxcb-xinerama0及解决方法
Calibre的Linux安装error:libxcb-xinerama0及解决方法
1049 0
Calibre的Linux安装error:libxcb-xinerama0及解决方法
下一篇
DataWorks