opus编译linux,opus交叉编译
从上个礼拜四接到带我的老师的任务,了解一下开源的音频编解码库opus,并且将这个开源库交叉编译到xx6138的板子上,看一下测试程序运行时cpu使用率。
先去opus.org上将源代码下载下来,同时看了一点点的Documentation。一开始有点不知所措,按照之前的编译顺序(1)./configure (2)make (3)make install了一番,现在电脑x86_64上跑了一下测试程序opus_demo,发现cpu使用率在96%上下,知道是自己的操作有错误。但是不知道是什么原因,无可奈何,先从最基本的README开始,English真的是一件很头疼的事,看了后面的话忘了前面的话,这是我实习一个半月以来的感受,真的好难受,但是没办法,可能大家都要经历的吧。
有点迷迷糊糊的看完之后,感觉大概知道了要怎么做,如果要进行交叉编译的话,就要在./cnonfigure后面做点手脚。我的做法是CC="csky-abiv2-linux-gcc" ./configure --host=csky,然后在config.sub里面添加相关的cpu。编译是通过了,同时也file 那个测试程序,是我想要的Motorola RCE类型的ELF文件。也算是成功了,但是在sc6138板子上跑的时候的现象是和x86_64一样的。和老师说了之后,第二天老师就和我说cpu厂商中天已经测试过了,cpu使用率还是可以的,听了心里还真的有点难过,花了整整一天的时间最后却没有出来想要的效果,也有点不服气。因为之后又有其他的事情要去完成,所以先搁在一边。
这个礼拜花了差不多两个晚上的非工作时间,总算是把这个问题给解决了。因为configure后面的配置参数有点多,所以我把它写成了脚本的形式,直接执行就可以了。
认认真真的阅读README之后,发现还要在他们官方的仓库下git clone //https:git.xiph.org/opus-tools.git这里面有几个关于编码,解码等测试程序要比之前的opus_demo稳定。同时在之后编译的过程中还需要用到两个库ogg和flac。接下来只要在四个文件下面进行相同的动作就行了。交叉编译的顺序ogg->flac->opus->opus-toos。
主要的改动就是在各创建一个build.sh:
CC="xxx-abiv2-linux-gcc" / //指定交叉编译器;
CXX="xxx-abiv2-linux-g++" /
./configure /
--host=xxx-abiv2-linux / //指定交叉编译后要运行的平台**这步很重要,没有的话就会编译成x86_64下的ELF文件;
LD="xxx-abiv2-linux-ld" /
AR="xxx-abiv2-linux-ar" /
CFLAGS="-mdsp -O2 -I/usr/local/include" / //指定可包含非默认路径的头文件;
LDFLAGS="-L/usr/local/lib -shared -Wl,-rpath=/usr/local/lib" / //指定可包含非默认的库函数,产生共享库,最后那个很重要,不然在编译flac的会出现为定义的错误,这个问题花了我很久的时间
同时如果在执行build.sh文件的时候出现,未知的你写的host名字,那么在每个目录下面的config.sub还要添加进你的cpu平台的名字。
最后中间还会出现两个test文件编译的时候会报未定义的错误,那么就在产生的config.h将对应的宏改成#undef xxx 就行了,也不知道这样做最以后有没有影响。但是最后还是可以编译产生opus的测试文件的。
通过这次也学到了很多吧,首先在接触一个你完全不知道的开源或者其他的工程的时候,首先要仔细的阅读里面的README,这可以省去你之前做的很多无用功。其次上面涉及到的3个开源项目的编译方法是一模一样的,都用到autotool这一套工作,虽然自己现在还没有了解很深入,但是也算是一个知识面的扩展,configure和makefile都可以自己生成。最后gcc后面的参数是一个值得深入了解的东西包括链接时的参数选择。
--host=xxx-abiv2-linux /
opus编译linux,opus交叉编译相关推荐
- opus编译linux,Opus 交叉编译实现
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 概述Opus Ubuntu实现交叉编译 简介要将一个开源库移植到Android 上面,那么有一个重要的步骤就是要尝试的采 ...
- arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置
Linux下的arm-linux-gcc交叉编译环境安装 安装arm-linux-gcc (1) 打开终端,使用sudo命令进入从超级管理员: sudo su 输入超级管理员密码. (2) 使用cd命 ...
- linux下pcre编译,linux下交叉编译lighttpd以及pcre
编译 pcre cd /home/youruser mkdir buid_pcre cd build_pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/pr ...
- 基于树莓派4b(raspberry pi 4b)内核编译流程,交叉编译环境搭建,loadable kernel module (LKM)编译方法
树莓派4b编译Linux内核&交叉编译环境的搭建 使用树莓派4b编译内核很简单,具体可以参考以下树莓派官网中关于Build the Kernel的内容: https://www.raspber ...
- 在Android中使用Opus 1.3.1(Ndk编译使用Opus so库)
Android中使用Opus 1.3.1 Opus是一个开放格式的有损声音编码的格式,并在其使用上没有任何专利或限制.还可以处理各种音频应用,包括IP语音.视频会议.游戏内聊天.流音乐.甚至远程现场音 ...
- 获取并编译linux源码,android获取源代码、编译、命令
---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...
- Zedboard学习(二):zedboard的Linux下交叉编译环境搭建
环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...
- linux安装交叉编译环境
(一)交叉编译器的简介 (1)本地编译 在了解交叉编译之前我们首先介绍一下另一个概念:本地编译 之前所做的C开发属于本地编译,即在当前PC下(x86的CPU下),直接编译出可以运行的程序(或者库文件) ...
- arm hisiv100 linux,hisiv100交叉编译工具链安装
hisi交叉编译工具链安装 一. 摘要: 交叉编译简单的说,就是A机器上编译生成,运行在B机器上.那么在A机器上的编译工具安装,就是本文所要描述的内容. 工欲善其事必先利其器,所以交叉 ...
最新文章
- 机器学习中有哪些形式简单却很巧妙的 idea?
- mysql设置了utf8mb4还是报错_第07期:有关 MySQL 字符集的 SQL 语句
- 编写nios-shell时想到的问题-回车vs换行
- redhat mysql tar_mysql5.7版本tar包手动安装---redhat7.0
- poj1419 Graph Coloring 最大独立集(最大团)
- Node.js -- Stream 使用小例 ( 流运用 :读取、写入、写出、拷贝)
- 读取Xml文档的元素和属性
- [理解ASP.NET Core框架]一个五十行的控制台Web
- 中国范围的经纬度及部分城市经纬度
- 免费中文api文档!免费java帮助文档api中文版!!!!!
- Android裁剪图片为圆形
- 百度可视化工具Sugar简单介绍以及使用说明
- 蜡笔小新 (python)
- 让你的专属博客更加漂亮
- HarmonyOS第三方组件——鸿蒙图片裁剪组件ohos-Image-Cropper
- 区块链技术成为金融业务应用热点
- 小米手机计算机无法归零,小米体脂秤不归零怎么调
- uniapp中唤醒支付宝,微信进行支付并返回app
- Spring同一个类事务处理
- 数据库开发-8-并发处理