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移植至嵌入式设备的主要内容,如果未能解决你的问题,请参考以下文章

lighttpd+sqlite3移植到嵌入式设备上

嵌入式linux开发uboot移植——uboot启动内核的机制

wpa_supplicant工具移植到嵌入式设备

wpa_supplicant工具移植到嵌入式设备

STM32移植LittleVgl(LVGL)嵌入式开源图形库

嵌入式设备中支持国密算法的方法