faac库的编译与移植

来源:互联网 发布:战龙三国张郺进阶数据 编辑:程序博客网 时间:2024/06/05 05:59

     Advanced Audio Coding。一种专为声音数据设计的文件压缩格式,与Mp3不同,它采用了全新的算法进行编码,更加高效,具有更高的性价比。利用AAC格式,可使人感觉声音质量没有明显降低的前提下,更加小巧;

FAAC开源工程源码下载链接: FAAC库下载地址

本人下载的都是gz后缀的文件;

解压之后进入目录;

下面编译成X86的库,编译器默认是GCC;

1.    ./configure --prefix="path"

2.   sudo make 

3.   sudo make install


--prefix 指定编译后,相关库文件存放的路径;

编译FAAC-1.28时遇到错误:

mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’

解决方法:

从123行开始修改此文件mpeg4ip.h,到129行结束。
修改前:
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif

修改后:
#ifdef __cplusplus
extern "C++" {
#endif
const char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif


下面编译成arm平台的库文件:

1.  ./confighre --prefix="path" --host=arm-none-linux-eabi

2. sudo make 

3. sudo make install

第三步出现了一点问题,

../libtool:line XXXX:arm-none-linux-eabi-ranlib command not found

在终端检查,发现arm-none-linux-eabi-ranlib可以在系统的PATH中找到

那为什么还提示说找不到arm-none-linux-eabi-ranlib呢?

原因如下:

1.我添加arm交叉编译器目录到PATH中是放在/etc/profile里的,这是用户的配置文件,我

的用户为普通用户;

2.执行make install时,加了sudo前缀,变成了root的工作环境和root的权限。

根据以上两点,make install是在root下做的,而arm-linux-ranlib在wmm用户的工作环境

中才能找到。所以产生了这里的错误。

那我既要取得root权限,又要具有当前普通用户的工作环境,怎办呢?

解决如下:

执行make install之前,先用下sudo -i命令取得root权限。然后再执行make install。

su 和 sudo 的区别:

1.共同点:都是root用户的权限;

2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;

sudo是完全取得root的权限和root的工作环境。

注意:sudo su切换到root时原用户的环境变量也一并丢失。应使用sudo -i


然后make install,安装成功



2 0
原创粉丝点击