从上个礼拜四接到带我的老师的任务,了解一下开源的音频编解码库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. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf
  2. ANDROID BITMAP内存限制OOM,OUT OF MEMORY
  3. SQL 判断两个时间段是否有交叉
  4. 视觉(12)Active Vision Based Robot Navigation System
  5. JZOJ 3815. 【NOIP2014模拟9.7】克卜勒
  6. clojure学习记录
  7. ajax.request提交,ajax request 请求
  8. Jacobian矩阵、Hessian矩阵
  9. HDU1276 士兵队列训练问题【模拟+array+vector+list】
  10. 简单的开源日志Log4D delphi 6---delphi xe 10全可用
  11. 硬件的驱动和sdk的理解与应用
  12. 这些年看过的书...
  13. 盈利稳定增长:盈利收益率法
  14. The project uses Gradle 4.1 which is incompatible with Java 11 or newer.
  15. wamp的Laravel项目的Apache虚拟主机域名绑定和端口修改(实用)
  16. 微信调支付宝支付常见问题
  17. 画一个椭圆c语言程序,画椭圆 - c代码库 - 云代码
  18. [答疑]类图:支付手段和优惠券、金额、积分有关
  19. matlab中线形_MATLAB在绘图时的用法——线形图
  20. 星号下三角形python答案_Python利用for循环打印星号三角形的案例

热门文章

  1. emui10如何降级_华为/荣耀手机系统降级,EMUI降级
  2. 互联网热门词汇:移动互联网最常出现的名词有哪些?
  3. install flashplayer
  4. android系统tts TextToSpeech源码原理解析及定制tts引擎
  5. jdk8 linux 32位 安装包 微云网盘下载
  6. 《layui宇宙版教程》:扫描二维码加2000人QQ群交流学习
  7. javaIO——PipedReader 和 PipedWriter 实现模拟即时聊天
  8. 使用飞桨PaddleSeg实现语义分割识别天空(一)
  9. javaweb项目Error:Android Source Generator: [example] Android SDK is not specified
  10. 论文笔记-DynaSLAM II: Tightly-Coupled Multi-Object Tracking and SLAM