opencore-amr移植至嵌入式设备
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencore-amr移植至嵌入式设备相关的知识,希望对你有一定的参考价值。
参考技术A这段时间在做一个智能学生证项目。其中一个需求是做一个类似微信发语音的功能。由于录音保存的是PCM编码的wav格式音频,文件体积巨大。为了获得极致的压缩率,打算将PCM编码的音频文件转为AMR格式,需要移植opencore-amr库。
opencore-amr是用C和C++编写的A MR音频编解码库,可以对AMR-NB和AMR-WB格式的音频进行编解码。要移植opencore-amr我们只需用对应的工具链编译出静态链接库即可。
1.下载并解压opencore-amr源码
2. opencore-amr使用configure脚本配置不同的参数。x86平台下,只需要指定‘--prefix’参数即可,这个参数指定了完成编译后的头文件和库的保存位置, 必须是绝对路径 。如需了解其他参数,可以使用 ./configure --help 命令查看。
3.配置好后,使用make进行编译和安装
之后就可以到”--prefix“设定的目录中查看编译好的库文件了。
1.相比于x86,嵌入式平台需要指定交叉编译器进行配置。 请确保环境变量中有交叉编译器的路径。
如果有“configure: error: C++ compiler cannot create executables”的错误提示,并且config.log中的报错信息为 ‘exit.c:(.text.exit+0x2c): undefined reference to `_exit\'’,该错误的原因可能是g++编译器的版本不匹配,解决办法为在configure前增加编译参数\'--specs=nosys.specs\'。
2.还需注意的是,编译器参数最好和要使用该库的代码保持一致,否则可能出现浮点计算方式不同而不能正常链接的错误。
lighttpd+sqlite3移植到嵌入式设备上
嵌入式设备上使用lighttpd+sqlite3开发web服务器功能
一,移植lighttpd
1、源码文件lighttpd-1.4.64.tar.gz
2、 ./configure -prefix=/opt/lighttpd -host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc --without-pcre2 --without-zlib
3、make
make install
4、将/opt/lighttpd下的文件复制到指定的地方
运行文件
cp -rf /mnt/lighttpd/sbin/* /usr/bin/
配置文件
cp -rf /mnt/app/lighttpd-1.4.64/lighttpd /etc/
库文件
mkdir /opt
cp -rf /mnt/lighttpd /opt/
页面文件
mkdir -p /srv/www/htdocs
临时文件
mkdir /srv/www/var/tmp
日志文件
创建
/var/log/lighttpd/error.log #可以查看日志文件
5、将配置文件修改 /etc/libhttpd/lighttpd.conf
1) dlopen() failed for: /opt/lighttpd/lib/mod_indexfile.so /opt/lighttpd/lib/mod_indexfile.so: cannot open shared object file: No such file or directory
lib 库文件没有找到,查看是否复制到指定目录
2)warning: please use server.use-ipv6 only for hostnames
配置文件lighttpd.conf注释掉 server.use-ipv6 = "enable"
3) opening errorlog '/var/log/lighttpd/error.log' failed: No such file or
日志文件没有 则创建
创建好后仍然提示没有则 配置文件lighttpd.conf注释掉 server.chroot = "/srv/www"
4)CGI使用提示错误则
stat for cgi-handler /usr/bin/perl: No such file or directory
配置文件夹conf.d 下 cgi.conf
cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "",
".rb" => "",
".erb" => "/usr/bin/eruby",
".py" => "/usr/bin/python" )
二, 移植sqlite3
1、源码文件:sqlite-autoconf-3380000.tar.gz
2、./configure CC=aarch64-linux-gnu-gcc --host=aarch64-linux-gnu- --prefix=/home/wy/xilinx/tools/sqlite-autoconf-3380000/INSTALL
3、 make
make install
Libraries have been installed in:
/home/wy/xilinx/tools/sqlite-autoconf-3380000/INSTALL/lib
4)将INSTALL目录下的 bin include lib share 复制到ubuntu上webserver源码目录下
在CGI-BIN文件夹下建Makefile文件,生成使用sqlite3的文件
CC := aarch64-linux-gnu-gcc
INC_FLAGS := -I ../include
LIBS := ../lib/libsqlite3.a
LIBS += ../lib/libsqlite3.so
LIBS += ../lib/libsqlite3.so.0
LIBS += ../lib/libsqlite3.so.0.8.6
all:
$(CC) $(INC_FLAGS) $(LIBS) logger.c -o logger.cgi
clean:
@rm -f logger.cgi
5)将INSTALL目录下的 bin lib复制到开发板/usr/bin,/usr/lib目录下
以上是关于opencore-amr移植至嵌入式设备的主要内容,如果未能解决你的问题,请参考以下文章
嵌入式linux开发uboot移植——uboot启动内核的机制