从上个礼拜四接到带我的老师的任务,了解一下开源的音频编解码库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交叉编译相关推荐

  1. opus编译linux,Opus 交叉编译实现

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 概述Opus Ubuntu实现交叉编译 简介要将一个开源库移植到Android 上面,那么有一个重要的步骤就是要尝试的采 ...

  2. arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置

    Linux下的arm-linux-gcc交叉编译环境安装 安装arm-linux-gcc (1) 打开终端,使用sudo命令进入从超级管理员: sudo su 输入超级管理员密码. (2) 使用cd命 ...

  3. 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 ...

  4. 基于树莓派4b(raspberry pi 4b)内核编译流程,交叉编译环境搭建,loadable kernel module (LKM)编译方法

    树莓派4b编译Linux内核&交叉编译环境的搭建 使用树莓派4b编译内核很简单,具体可以参考以下树莓派官网中关于Build the Kernel的内容: https://www.raspber ...

  5. 在Android中使用Opus 1.3.1(Ndk编译使用Opus so库)

    Android中使用Opus 1.3.1 Opus是一个开放格式的有损声音编码的格式,并在其使用上没有任何专利或限制.还可以处理各种音频应用,包括IP语音.视频会议.游戏内聊天.流音乐.甚至远程现场音 ...

  6. 获取并编译linux源码,android获取源代码、编译、命令

    ---my--- 正确的编译android sdk: cd myandroid . ./build/envsetup.sh lunch sdk-eng make sdk //或者: make PROD ...

  7. Zedboard学习(二):zedboard的Linux下交叉编译环境搭建

    环境准备 首先肯定是要下载xilinx-2011.09-50-arm-xilinx-linux-gnueabi.bin文件,这是官方提供的linux下交叉编译链安装文件,下载地址为:https://p ...

  8. linux安装交叉编译环境

    (一)交叉编译器的简介 (1)本地编译 在了解交叉编译之前我们首先介绍一下另一个概念:本地编译 之前所做的C开发属于本地编译,即在当前PC下(x86的CPU下),直接编译出可以运行的程序(或者库文件) ...

  9. arm hisiv100 linux,hisiv100交叉编译工具链安装

    hisi交叉编译工具链安装 一.         摘要: 交叉编译简单的说,就是A机器上编译生成,运行在B机器上.那么在A机器上的编译工具安装,就是本文所要描述的内容. 工欲善其事必先利其器,所以交叉 ...

最新文章

  1. 机器学习中有哪些形式简单却很巧妙的 idea?
  2. mysql设置了utf8mb4还是报错_第07期:有关 MySQL 字符集的 SQL 语句
  3. 编写nios-shell时想到的问题-回车vs换行
  4. redhat mysql tar_mysql5.7版本tar包手动安装---redhat7.0
  5. poj1419 Graph Coloring 最大独立集(最大团)
  6. Node.js -- Stream 使用小例 ( 流运用 :读取、写入、写出、拷贝)
  7. 读取Xml文档的元素和属性
  8. [理解ASP.NET Core框架]一个五十行的控制台Web
  9. 中国范围的经纬度及部分城市经纬度
  10. 免费中文api文档!免费java帮助文档api中文版!!!!!
  11. Android裁剪图片为圆形
  12. 百度可视化工具Sugar简单介绍以及使用说明
  13. 蜡笔小新 (python)
  14. 让你的专属博客更加漂亮
  15. HarmonyOS第三方组件——鸿蒙图片裁剪组件ohos-Image-Cropper
  16. 区块链技术成为金融业务应用热点
  17. 小米手机计算机无法归零,小米体脂秤不归零怎么调
  18. uniapp中唤醒支付宝,微信进行支付并返回app
  19. Spring同一个类事务处理
  20. 数据库开发-8-并发处理

热门文章

  1. 配电站房监控系统方案
  2. MIT评选出的全球最聪明的50个公司-完整名单(附带往年名单)!
  3. 期货成交量是什么(期货成交量什么意思)
  4. 比达应用商店报告:BT3用户多 豌豆荚PP助手活跃高
  5. Qt基于QuaZIP实现文件压缩/解压(Win下)
  6. 【CodeCombat-Python】地牢-kithgard 斗殴
  7. python gui选择文件_GUI中选择文件
  8. linux虚拟文件系统(三)-ext4文件系统注册分析
  9. [双目视差] 立体匹配算法推理 - SGBM算法(一)
  10. 什么是CRM系统?CRM的价值体现在哪里?