8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

概述Opus Ubuntu实现交叉编译

简介要将一个开源库移植到Android 上面,那么有一个重要的步骤就是要尝试的采用NDK交叉编译来编译,从而确定这个库是否能够移植到Android上面,如果能够交叉编译成功,后面的步骤

就是移植到Android Studio 中来编译,实现一个可以调试的NDK环境,所以这篇文章就是介绍在Ubuntu下面,采用Ndk 交叉编译最新版的Opus,

由于最新版的NDK 已经不能指定编译armeabi了,所以我们直接编译armv7-a的

环境准备

需要的文件结构图

目标目标是我们要编译出opus-tools里面的可执行程序,然后放到手机里面跑,看是否能够正常工作,在此之前,我们可以先看下官网提供的opus-tools可执行的程序

这个是官网提供的最新版的 Window下的可执行程序下载地址 https://archive.mozilla.org/pub/opus/win64/opus-tools-0.1.10-win64.zip

下面了解他们是干嘛用的,提供了什么功能

压缩包文件内容

opusdec.exe是用来将一个opus文件还原成一个wav文件

opusenc.exe 是用来将一个wav文件,压缩成一个opus格式的文件

opusinfo.exe 可以用来显示一个opus文件的信息

交叉编译实现

构建交叉编译链

使用交叉编译链比较方便,下面是构建的脚本1

2

3

4

5

6

7

8

9

10

11export ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

$ANDROID_HOME/build/tools/make_standalone_toolchain.py

--arch arm --api 16

--install-dir $ANDROID_HOME/toolchain

cd $ANDROID_HOME

mkdir -p usr/local/lib/pkgconfig

上述脚本执行之后的结果

编译 libogg-1.3.3

下面是脚本文件,这里构建一个静态库1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

#LDFLAGS="-L$DEST/lib 指定要连接库的时候,寻找的地方

LDFLAGS="-L$DEST/lib -march=armv7-a"

#CPPFLAGS="-I$DEST/include 指定头文件寻找的地方

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

# c-ares library build

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`

--prefix=$PREFIX --enable-static --disable-shared

make

make install

echo "build ogg complete!"

编译的结果为红色部分指定的

编译 flac-1.3.2,

下面是脚本文件,这里构建一个静态库1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

LDFLAGS="-L$DEST/lib -march=armv7-a"

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

# c-ares library build

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`

--prefix=$PREFIX --enable-static --disable-shared

make

make install

echo "build flac complete!"

这里要知道的是编译flac库需要使用到ogg库,所以ogg库放在第一个编译,而且我们的 LDFLAGS=”-L$DEST/lib CPPFLAGS=”-I$DEST/include 指定了链接查找的地方,所以可以他可以自动的查找到

编译的结果为红色部分指定的

编译 libopus 1.2.1

下面是脚本文件,这里构建一个静态库1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

LDFLAGS="-L$DEST/lib -march=armv7-a"

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE`

--prefix=$PREFIX

make

make install

编译的结果为红色部分指定的

编译 openssl-1.0.2m

下面是脚本文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21#!/bin/bash

ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

LDFLAGS="-L$DEST/lib -march=armv7-a"

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ export CROSS_COMPILE=$TOOLCHAIN/bin/arm-linux-androideabi-

./Configure --prefix=$PREFIX android

make

make install

编译的结果为红色部分指定的

编译 opusfile 0.9

下面是脚本文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

LDFLAGS="-L$DEST/lib -march=armv7-a"

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX

make

make install

编译的结果为红色部分指定的

编译 opus-tools 0.1.10

下面是脚本文件1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20#!/bin/bash

ANDROID_HOME=/home/yuhui/WorkSpace/android-ndk-r14b

TOOLCHAIN=$ANDROID_HOME/toolchain

PATH=$TOOLCHAIN/bin:$PATH

HOST=arm-linux-androideabi

PREFIX=$ANDROID_HOME/usr/local

LOCAL_DIR=$ANDROID_HOME/usr/local

TOOL_BIN_DIR=$ANDROID_HOME/toolchain/bin

PATH=${TOOL_BIN_DIR}:$PATH

DEST=$ANDROID_HOME/usr/local

CC="$HOST-gcc -march=armv7-a"

CXX=$HOST-g++

LDFLAGS="-L$DEST/lib -march=armv7-a"

CPPFLAGS="-I$DEST/include -march=armv7-a"

CXXFLAGS=$CFLAGS

PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ LD_LIBRARY_PATH=$PREFIX/lib/ ./configure --host=$HOST --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` --prefix=$PREFIX

make

make install

要注意的是这个opus-tools 需要依赖opus库,ogg库,flac库 编译的结果为红色部分指定的

验证编译的结果我们可以将编译之后产生的文件拷贝到手机里面,手机里面有一个目录可以不用root进入的,就是/data/local/tmp目录,这个目录是所有的手机都是可以访问的,所以选择放在这个目录

然后进入使用adb shell 进入命令行模式

push到手机的目录以及内容,这里是将整个local的内容push到手机上

opusinfo使用结果

opusdec使用结果

opusdec使用结果

将压缩之后,还有解压缩生成的文件,可以直接使用音乐播放器播放,qq音乐也是支持直接播放opus文件的,还有google浏览器也是支持的,我们可以根据这个来判断是否生成有问题

总结至此,Opus交叉编译已经完成,接下来一篇文章会介绍怎么集成到Android Studio中,而且实现边录音边压缩,边解压缩边播放

opus编译linux,Opus 交叉编译实现相关推荐

  1. opus编译linux,opus交叉编译

    从上个礼拜四接到带我的老师的任务,了解一下开源的音频编解码库opus,并且将这个开源库交叉编译到xx6138的板子上,看一下测试程序运行时cpu使用率. 先去opus.org上将源代码下载下来,同时看 ...

  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. 用贝叶斯定理解决三门问题并用Python进行模拟(Bayes' Rule Monty Hall Problem Simulation Python)...
  2. 硕博士生参加学术会议重要吗?如何选择?注意什么?
  3. mysql国际化_Java的Struts框架中的主题模板和国际化设置
  4. JQuery选择器中的可见性筛选
  5. 如何用VB编程实现关闭WINDOWS窗口?
  6. JavaScript面向对象 - 严格模式
  7. 老板最讨厌的10种烂个性
  8. tomcat版本区别
  9. 项目日报模板_知名房企的精细化施工管理,从项目日常到施工图,全方位涵盖...
  10. 360 x TiDB|性能提升 10 倍,360 如何轻松抗住双十一流量
  11. python:双色球随机选号
  12. 贵州学业水平测试信息技术软件,贵州信息技术学业水平考试系统操作手册.doc...
  13. win10不自带扫雷,想玩扫雷怎么办?自己造一个扫雷
  14. 【小5聊】2021年度总结,回顾 2021,展望 2022
  15. 360随身wifi2驱动 v5.3.0.1035 官方版
  16. 关于 beyondcompare 只有FTP没有 sftp 的解决方案
  17. 黑苹果 hackintosh 啰嗦模式
  18. 冒志鸿:大公司不模仿你,说明你危险了
  19. Word学习笔记分享
  20. 有关QJ_Filecenter在vue中的使用和组件封装

热门文章

  1. 按键精灵初步,使用winIO实现驱动级模拟按键
  2. CleanMyMac X免费电脑清理加速软件-清理内存磁盘缓存注册表
  3. 时钟加闹钟c语言程序,51单片机c语言电子钟(已加入调时、闹铃、整点报时功能)...
  4. ARP劫持攻击(实验寒假补)
  5. python打开dat文件_科学网—Python: 文件的打开,读写和关闭 - 刘洋洋的博文
  6. NOI OJ 1.5 16:买房子 C语言
  7. 邂逅天融信防火墙 - 新增公网链路
  8. 【报错处理】RuntimeError: input.size(-1) must be equal to input_size. Expected 5, got 21
  9. BIM5D软件介绍----之前版本
  10. 面向对象第四章简单习题