编译Speex生成so库文件(android-speex)
项目中需要用音频格式转换,之前使用VoAacEncoder,部分手机总是莫名崩溃,所以决定不再使用VoAacEncoder,换做Speex来完成格式转换,但是没有找到Speex的库文件,网上介绍的都是Speex的编译,以前从来没有自己折腾过这些,好在还算顺利完成了,首先感谢一下分享技术的大牛们。
- Cygwin的安装
- Cygwin编译Speex代码
Cygwin的安装
- 相关资源
Cygwin下载:https://www.cygwin.com/install.html
Windows 32位:https://www.cygwin.com/setup-x86.exe
Windows 64位:https://www.cygwin.com/setup-x86_64.exe - 安装步骤(在线安装)
Windows上安装软件没有什么需要多说的,这里直接说一下我安装时让我迷惑的地方。
需要安装的模块:
①binutils
②gcc-core
③gcc-g++
④mingw-gcc-core
⑤mingw-gcc-g++
⑥gdb
⑦make
配置Cygwin环境变量($CYGWIN/home/user/.bash_profile):
NDK=/cygdrive/d/adt-bundle-windows-x64/android-ndk-r7
export NDK
注:android-ndk-r7文件在我的D:\adt-bundle-windows-x64\android-ndk-r7目录下
配置Cygwin Windows环境变量
CYGWIN_HOME Cygwin安装目录
添加path %CYGWIN_HOME%\bin;
编译Speex代码
- 下载Speex代码
官网的speex1.2rc代码文件不全,浪费我很多时间,不建议下载。
Speex代码下载:http://pan.baidu.com/s/1pJXrw9P - 编译前项目代码结构
可以看到我的项目代码目录 -> F:\workspace\android-speex - 打开Cygwin开始编译
切换目录命令: cd /cygdrive/f/workspace/android-speex/jni
编译命令: ndk-build
编译完成
编译完成后目录结构
我使用Intellij Idea开发,虽说idea不支持ndk,但使用cygwin貌似跟ide没有半毛钱关系,也就是说完全可以抛弃eclipse来开发安卓项目了。好了,现在就可以使用编译好的Speex库了,赶紧改代码去了,写博客挺费时间。
Windows 64位离线文件:http://yun.baidu.com/s/1mgNUbSs
编译Speex生成so库文件(android-speex)的更多相关文章
- 由动态库文件dll生成lib库文件(手动生成.def文件,然后使用lib命令编译,非常牛),同理可使用dll生成.a库文件
本文基于OpenBlas的编译和安装,来说明如何从一个dll文件生成lib库文件. 参考OpenBlas的说明“Howto generate import library for MingW”,和Mi ...
- 修改OpenSSL默认编译出的动态库文件名称
在 Windows 平台上调用动态链接库 dll 文件时,有两种方式:a) 隐式的加载时链接:使用 *.lib (导入库)文件,在 IDE 的链接器相关设置中加入导入库 lib 文件的名称,或在程序中 ...
- gcc编译工具生成动态库和静态库之一----介绍
1.库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. ...
- 编译 python 生成静态库 libpython2.7.so
由于我们是C++作驱动的Python开发,驱动需要加上Python静态库libpython2.7.so.libpython2.7.so.1.0.libpython2.7.a.此处我想在python源码 ...
- Makefile学习(二)----生成静态库文件
Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件: .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大: .so后缀文件:动态库文件,只是一个指向,不会合到可执行程序 ...
- 由动态库文件dll生成lib库文件
本文基于OpenBlas的编译和安装.来说明怎样从一个dll文件生成lib库文件. 參考OpenBlas的说明"Howto generate import library for MingW ...
- gcc编译工具生成动态库和静态库
一. 库的分类 1.1. 静态库(.a) 1.1.1. 静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大.所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 1. ...
- Android NDK入门实例 计算斐波那契数列二生成.so库文件
上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件.下面实现本地代码,再用ndk-build编译生成.so库文件.由于编译时要用到make和gcc,这里很多人是通过安装 ...
- Linux下编译tinyxml生成动态库
首先去到sourceforge下载tinyxml的源码,https://sourceforge.net/projects/tinyxml/?source=dlp,最新版本是2.6.2. 将下载成功的t ...
随机推荐
- Linux目录结构(一)
linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下. 文件类型 linux有四种基本文件系统类型:普通文件.目录文件.连续文件和特殊文件.可以用file命令来识 ...
- form&method【POST~GET】
<form.../>中method属性指定了该表单是以哪种方式提交请求,有两种方式:GET请求方式和POST请求方式,默认是GET请求方式.两种方式的区别:get方式的请求是在浏览器地址栏 ...
- javascript中缓存
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- <Android Framework 之路>Android5.1 Camera Framework(一)
Android5.0 Camera Framework 简介 CameraService启动 CameraService是在MediaServer启动过程中进行的 main_mediaserver.c ...
- Simula-Virtual function
Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the ...
- URL回车后发生了什么
1.解析URL ________________________________________________________________________ 关于URL: URL(Universa ...
- css——样式的继承
css的样式继承 在上面这段代码中,p{}为父类,b{}为子类.b{}将继承p{}. 因为<b>在<p>里面,p{}为父类,b{}为子类. 继承方式: 如果子类没有,父类有,则 ...
- 百度图标echarts.js的使用
echarts官网:http://echarts.baidu.com/api.html#echarts echarts是百度公司开的一种开源制作图片工具,是一个专门制作图表的开源工具,功能非常强大,地 ...
- 关于Number的属性和方法你知晓几分?速来围观!
1.Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)返回值为布尔值. 和全局的 isFinite() 函数相比,这个方法不会强制将一个非数值的参 ...
- debian 9 安装无线网卡
#添加源 echo "deb http://httpredir.debian.org/debian/ stretch main contrib non-free" >> ...