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,安装成功