文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

啃论文俱乐部—移植Speexdsp到OpenHarmony标准系统(一)

2024-12-01 15:54

关注

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

大家好!我来自南京,在OpenHarmony成长计划啃论文俱乐部,与华为、软通动力、润和软件、拓维信息、深开鸿等公司一起,学习和研究操作系统技术,从今年1月11日加入OpenHarmony俱乐部已经有接近8个月时间了。笔者一直在思考啃论文给我带来了些什么,通过啃论文能为OpenHarmony做些什么。笔者利用大二升大三暑假两个月时间移植了Speexdsp这个三方库到OpenHarmony标准系统,而关于前面的问题我似乎找到了答案,现将啃论文和三方库移植分享经验如下:

Speexdsp

提到Speexdsp不得不先提到开源语音编解码器Speex。

如下是ACM Surveys中收录的为《Survey on Application-Layer Mechanisms for Speech Quality Adaptation in VoIP》综述中的一张图表。

Speexdsp功能

预处理器

预处理器被设计为在运行编码器之前在音频上使用。预处理器提供三个主要功能:

自适应抖动缓冲区

声学回声消除器

回声消除是为了提高远端质量:

重采样器

这个重采样器可以用于在任意两个速率之间进行转换(比率必须是有理数),并且可以控制质量/复杂性的权衡。

Speexdsp移植到OpenHarmony标准系统

OpenHarmony三方库主要是基于标准 Linux 系统的 c/c++ 开源库,所以三方库的移植工作,首先是在标准 Linux 系统搭建环境、编译与验证,然后将三方库的编译加入到 OpenHarmony 工程的构建中。

三方库移植的主要开发步骤如下:

  1. 在标准Linux系统下载三方库源码,搭建开发环境,编译整个源码工程。
  2. 分析在标准Linux系统的编译过程文件,提取编译需要的源文件、编译依赖等信息。
  3. 根据上一步分析结果,编写gn文件,将三方库加入到OpenHarmony的编译体系。
  4. 验证编译结果,在OpenHarmony的out目录是否生成目标库。
  5. 测试demo/测试单元用例执行。

一、下载源码

Speexdsp源码下载地址:https://github.com/xiph/speexdsp。

二、搭建开发环境,生成Makefile编译安装speexdsp。

Speexdsp在linux下的编译安装,在linux终端输入如下语句:

sudo apt-get install make
sudo apt-get install autoconf automake libtool

GNU Autotools框架包括三个主要的包:Autoconf,Automake,和Libtool。

./autogen.sh
./configure --help
jiajiahao@ubuntu:~/Desktop/SpeexDSP-1.2.1$ ./configure --help
`configure' configures speexdsp 1.2.1 to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/speexdsp]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-silent-rules less verbose build output (undo: "make V=1")
--disable-silent-rules verbose build output (undo: "make V=0")
--disable-maintainer-mode
disable make rules and dependencies not useful (and
sometimes confusing) to the casual installer
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--enable-dependency-tracking
do not reject slow dependency extractors
--disable-dependency-tracking
speeds up one-time build
--disable-libtool-lock avoid locking (might break parallel builds)
--enable-sse Enable SSE support
--enable-neon Enable NEON support
--enable-fixed-point Compile as fixed-point
--disable-float-api Disable the floating-point API
--disable-examples Do not build example programs, only the library
--enable-arm4-asm Make use of ARM4 assembly optimizations
--enable-arm5e-asm Make use of ARM5E assembly optimizations
--enable-blackfin-asm Make use of Blackfin assembly optimizations
--enable-fixed-point-debug Debug fixed-point implementation
--enable-resample-full-sinc-table Resample full SINC table (no interpolation)
--enable-ti-c55x Enable support for TI C55X DSP
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
both]
--with-aix-soname=aix|svr4|both
shared library versioning (aka "SONAME") variant to
provide on AIX, [default=aix].
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot[=DIR] Search for dependent libraries within DIR (or the
compiler's sysroot if not specified).
--with-fft=choice use an alternate FFT implementation. The available
choices are kiss (default fixed point), smallft
(default floating point), gpl-fftw3 and
proprietary-intel-mkl
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
LT_SYS_LIBRARY_PATH
User-defined run-time library search path.
CPP C preprocessor
PKG_CONFIG path to pkg-config utility
PKG_CONFIG_PATH
directories to add to pkg-config's search path
PKG_CONFIG_LIBDIR
path overriding pkg-config's built-in search path
FFT_CFLAGS C compiler flags for FFT, overriding pkg-config
FFT_LIBS linker flags for FFT, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to <speex-dev@xiph.org>.
mkdir build
./configure --prefix=/XXX/speexdsp/build -disable-sse

SSE是一个X86平台的指令集,所以要移植speexdsp到OpenHarmony过程,configure时要disable掉sse这个配置。否则在加入OpenHarmony编译体系后生成libspeexdsp_share.z.so和在ohos上执行的可执行文件编译过程中会报错。

在linux上生成speexdsp的so动态链接库和.a静态链接库

make
make install

编译安装后build目录结构如下:

整个编译安装过程终端输出log如下:

jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ ./autogen.sh
Updating build configuration files, please wait....
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:26: installing './compile'
configure.ac:24: installing './config.guess'
configure.ac:24: installing './config.sub'
configure.ac:21: installing './install-sh'
configure.ac:21: installing './missing'
libspeexdsp/Makefile.am: installing './depcomp'
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ mkdir build
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ ./configure --prefix=/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build -disable-sse
checking whether make supports nested variables... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking how to print strings... printf
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether byte ordering is bigendian... no
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for C/C++ restrict keyword... __restrict
checking for C99 variable-size arrays... yes
checking for SSE in current arch/CFLAGS... yes
checking for SSE2 in current arch/CFLAGS... yes
checking for NEON in current arch/CFLAGS... no
checking for ELF visibility... yes
checking sys/soundcard.h usability... yes
checking sys/soundcard.h presence... yes
checking for sys/soundcard.h... yes
checking sys/audioio.h usability... no
checking sys/audioio.h presence... no
checking for sys/audioio.h... no
checking for cos in -lm... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking size of int16_t... 2
checking size of uint16_t... 2
checking size of u_int16_t... 2
checking size of int32_t... 4
checking size of uint32_t... 4
checking size of u_int32_t... 4
checking size of short... 2
checking size of int... 4
checking size of long... 8
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libspeexdsp/Makefile
config.status: creating doc/Makefile
config.status: creating SpeexDSP.spec
config.status: creating include/Makefile
config.status: creating include/speex/Makefile
config.status: creating speexdsp.pc
config.status: creating win32/Makefile
config.status: creating win32/libspeexdsp/Makefile
config.status: creating symbian/Makefile
config.status: creating win32/VS2003/Makefile
config.status: creating win32/VS2003/libspeexdsp/Makefile
config.status: creating win32/VS2003/tests/Makefile
config.status: creating win32/VS2005/Makefile
config.status: creating win32/VS2005/libspeexdsp/Makefile
config.status: creating win32/VS2005/tests/Makefile
config.status: creating win32/VS2008/Makefile
config.status: creating win32/VS2008/libspeexdsp/Makefile
config.status: creating win32/VS2008/tests/Makefile
config.status: creating include/speex/speexdsp_config_types.h
config.status: creating ti/Makefile
config.status: creating ti/speex_C54_test/Makefile
config.status: creating ti/speex_C55_test/Makefile
config.status: creating ti/speex_C64_test/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
Type "make; make install" to compile and install Speex
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ make
make all-recursive
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
Making all in libspeexdsp
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
CC preprocess.lo
CC jitter.lo
CC mdf.lo
CC fftwrap.lo
CC filterbank.lo
CC resample.lo
CC buffer.lo
CC scal.lo
CC smallft.lo
CCLD libspeexdsp.la
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
Making all in include
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making all in speex
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making all in doc
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
Making all in win32
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making all in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
Making all in VS2003
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making all in VS2005
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making all in VS2008
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
Making all in libspeexdsp
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
Making all in tests
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 对“all”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 对“all-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making all in symbian
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 对“all”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
Making all in ti
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
Making all in speex_C54_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
Making all in speex_C55_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
Making all in speex_C64_test
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 对“all”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 对“all-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
jiajiahao@ubuntu:~/Desktop/speexdsp-SpeexDSP-1.2.1$ make install
Making install in libspeexdsp
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
/usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib'
/bin/sh ../libtool --mode=install /usr/bin/install -c libspeexdsp.la '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib'
libtool: install: /usr/bin/install -c .libs/libspeexdsp.so.1.5.2 /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.so.1.5.2
libtool: install: (cd /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib && { ln -s -f libspeexdsp.so.1.5.2 libspeexdsp.so.1 || { rm -f libspeexdsp.so.1 && ln -s libspeexdsp.so.1.5.2 libspeexdsp.so.1; }; })
libtool: install: (cd /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib && { ln -s -f libspeexdsp.so.1.5.2 libspeexdsp.so || { rm -f libspeexdsp.so && ln -s libspeexdsp.so.1.5.2 libspeexdsp.so; }; })
libtool: install: /usr/bin/install -c .libs/libspeexdsp.lai /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.la
libtool: install: /usr/bin/install -c .libs/libspeexdsp.a /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: install: chmod 644 /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: install: ranlib /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/libspeexdsp.a
libtool: finish: PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/sbin" ldconfig -n /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib
----------------------------------------------------------------------
Libraries have been installed in:
/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[2]: 对“install-data-am”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/libspeexdsp”
Making install in include
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making install in speex
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[3]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
/usr/bin/install -c -m 644 speexdsp_config_types.h '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
/usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
/usr/bin/install -c -m 644 speex_echo.h speex_jitter.h speex_preprocess.h speex_resampler.h speexdsp_types.h '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/include/speex'
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include/speex”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include”
Making install in doc
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[2]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/share/doc/speexdsp'
/usr/bin/install -c -m 644 manual.pdf '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/share/doc/speexdsp'
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/doc”
Making install in win32
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making install in libspeexdsp
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/libspeexdsp”
Making install in VS2003
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2003”
Making install in VS2005
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2005”
Making install in VS2008
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
Making install in libspeexdsp
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/libspeexdsp”
Making install in tests
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008/tests”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[4]: 对“install-exec-am”无需做任何事。
make[4]: 对“install-data-am”无需做任何事。
make[4]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32/VS2008”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/win32”
Making install in symbian
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[2]: 对“install-exec-am”无需做任何事。
make[2]: 对“install-data-am”无需做任何事。
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/symbian”
Making install in ti
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
Making install in speex_C54_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C54_test”
Making install in speex_C55_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C55_test”
Making install in speex_C64_test
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti/speex_C64_test”
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[3]: 对“install-exec-am”无需做任何事。
make[3]: 对“install-data-am”无需做任何事。
make[3]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/ti”
make[1]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 进入目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[2]: 对“install-exec-am”无需做任何事。
/usr/bin/mkdir -p '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/pkgconfig'
/usr/bin/install -c -m 644 speexdsp.pc '/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib/pkgconfig'
make[2]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1
make[1]: 离开目录“/home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1

生成在linux上测试speexdsp功能用的可执行文件

编译生成出在linux上测试speexdsp功能用的可执行文件,目的是为了分析speexdsp在ohos编译体系生成动态链接库后进功能测试的逻辑。

阅读speexdsp用户手册,测试speexdsp功能的源文件分别为:

它们均位于speexdsp下的libspeexdsp。

需要把它们编译为可运行的执行文件,通过阅读用户手册可以知道在编译时需要添加-lspeexdsp和-lm。

以编译testresample可执行文件为例,编译执行语句如下:

在speexdsp目录libspeexdsp目录下打开终端输入如下语句。

gcc testjitter.c -L /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/build/lib -lspeexdsp -o testjitter -I /home/jiajiahao/Desktop/speexdsp-SpeexDSP-1.2.1/include -lm

编译出全部测试功能用的可执行文件如下:

​想了解更多关于开源的内容,请访问:​

​51CTO 开源基础软件社区​

​https://ost.51cto.com​​。

来源:​​51CTO开源基础软件社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯