恩,我参照openssl写了一个脚本,现在speex编译成功,在build/output目录下生成了include,lib,

然后参照openssl把对应的头文件和库文件添加进来,但是编译的时候会报如下错误,

[*] link ffmpeg

-Wl,--fix-cortex-a8

libavcodec/libspeexdec.c:146: error: undefined reference to 'speex_bits_remaining'

libavcodec/libspeexdec.c:156: error: undefined reference to 'speex_bits_read_from'

libavcodec/libspeexdec.c:161: error: undefined reference to 'speex_decode_int'

libavcodec/libspeexdec.c:147: error: undefined reference to 'speex_bits_peek_unsigned'

libavcodec/libspeexdec.c:172: error: undefined reference to 'speex_decoder_ctl'

libavcodec/libspeexdec.c:167: error: undefined reference to 'speex_decode_stereo_int'

libavcodec/libspeexdec.c:180: error: undefined reference to 'speex_bits_destroy'

libavcodec/libspeexdec.c:181: error: undefined reference to 'speex_decoder_destroy'

libavcodec/libspeexdec.c:48: error: undefined reference to 'speex_packet_to_header'

libavcodec/libspeexdec.c:73: error: undefined reference to 'speex_header_free'

libavcodec/libspeexdec.c:88: error: undefined reference to 'speex_lib_get_mode'

libavcodec/libspeexdec.c:106: error: undefined reference to 'speex_bits_init'

libavcodec/libspeexdec.c:107: error: undefined reference to 'speex_decoder_init'

libavcodec/libspeexdec.c:119: error: undefined reference to 'speex_decoder_ctl'

libavcodec/libspeexdec.c:123: error: undefined reference to 'speex_nb_mode'

libavcodec/libspeexdec.c:123: error: undefined reference to 'speex_std_stereo_request_handler'

libavcodec/libspeexdec.c:189: error: undefined reference to 'speex_bits_reset'

collect2: error: ld returned 1 exit status

我改的do-compile-ffmpeg.sh的脚本如下,现在只是编了armv7a一个架构,请问一下哪些地方还需要改的?谢谢了!

FF_BUILD_ROOT=pwd

FF_ANDROID_PLATFORM=android-9

FF_GCC_VER=4.8

FF_GCC_64_VER=4.9

FF_BUILD_NAME=

FF_SOURCE=

FF_CROSS_PREFIX=

FF_DEP_OPENSSL_INC=

FF_DEP_OPENSSL_LIB=

FF_DEP_SPEEX_INC=

FF_DEP_SPEEX_LIB=

FF_CFG_FLAGS=

FF_EXTRA_CFLAGS=

FF_EXTRA_LDFLAGS=

FF_DEP_LIBS=

FF_ASM_OBJ_DIR=

#--------------------

echo ""

echo "--------------------"

echo "[] make NDK standalone toolchain"

echo "--------------------"

FF_MAKE_TOOLCHAIN_FLAGS=

case "$UNAME_S" in

Darwin)

FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --system=darwin-x86_64"

;;

CYGWIN_NT-)

FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --system=windows-x86_64"

FF_WIN_TEMP="$(cygpath -am /tmp)"

export TEMPDIR=$FF_WIN_TEMP/

echo "Cygwin temp prefix=$FF_WIN_TEMP/"

#FF_CFG_FLAGS="$FF_CFG_FLAGS --tempprefix=$FF_WIN_TEMP/"

;;

esac

#----- armv7a begin -----

if [ "$FF_ARCH" = "armv7a" ]; then

FF_BUILD_NAME=ffmpeg-armv7a

FF_BUILD_NAME_OPENSSL=openssl-armv7a

FF_BUILD_NAME_SPEEX=speex-armv7a

FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

FF_CROSS_PREFIX=arm-linux-androideabi

FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}

FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm --cpu=cortex-a8"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-neon"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-thumb"

FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv7-a -mcpu=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb"

FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS -Wl,--fix-cortex-a8"

FF_ASM_OBJ_DIR="libavutil/arm/*.o libavcodec/arm/*.o libswresample/arm/*.o"

elif [ "$FF_ARCH" = "armv5" ]; then

FF_BUILD_NAME=ffmpeg-armv5

FF_BUILD_NAME_OPENSSL=openssl-armv5

FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

FF_CROSS_PREFIX=arm-linux-androideabi

FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_VER}

FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=arm"

FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=armv5te -mtune=arm9tdmi -msoft-float"

FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"

FF_ASM_OBJ_DIR="libavutil/arm/*.o libavcodec/arm/*.o libswresample/arm/*.o"

elif [ "$FF_ARCH" = "x86" ]; then

FF_BUILD_NAME=ffmpeg-x86

FF_BUILD_NAME_OPENSSL=openssl-x86

FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

FF_CROSS_PREFIX=i686-linux-android

FF_TOOLCHAIN_NAME=x86-${FF_GCC_VER}

FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=x86 --cpu=i686 --enable-yasm"

FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS -march=atom -msse3 -ffast-math -mfpmath=sse"

FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"

FF_ASM_OBJ_DIR="libavutil/x86/*.o libavcodec/x86/*.o libswresample/x86/*.o libswscale/x86/*.o"

elif [ "$FF_ARCH" = "arm64" ]; then

FF_ANDROID_PLATFORM=android-21

FF_BUILD_NAME=ffmpeg-arm64

FF_BUILD_NAME_OPENSSL=openssl-arm64

FF_SOURCE=$FF_BUILD_ROOT/$FF_BUILD_NAME

FF_CROSS_PREFIX=aarch64-linux-android

FF_TOOLCHAIN_NAME=${FF_CROSS_PREFIX}-${FF_GCC_64_VER}

FF_CFG_FLAGS="$FF_CFG_FLAGS --arch=aarch64 --enable-yasm"

FF_EXTRA_CFLAGS="$FF_EXTRA_CFLAGS"

FF_EXTRA_LDFLAGS="$FF_EXTRA_LDFLAGS"

FF_ASM_OBJ_DIR="libavutil/aarch64/*.o libavcodec/aarch64/*.o libswresample/aarch64/*.o libavcodec/neon/*.o"

else

echo "unknown architecture $FF_ARCH";

exit 1

fi

FF_TOOLCHAIN_PATH=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/toolchain

FF_MAKE_TOOLCHAIN_FLAGS="$FF_MAKE_TOOLCHAIN_FLAGS --install-dir=$FF_TOOLCHAIN_PATH"

FF_SYSROOT=$FF_TOOLCHAIN_PATH/sysroot

FF_PREFIX=$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output

FF_DEP_OPENSSL_INC=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_OPENSSL/output/include

FF_DEP_OPENSSL_LIB=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_OPENSSL/output/lib

FF_DEP_SPEEX_INC=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_SPEEX/output/include

FF_DEP_SPEEX_LIB=$FF_BUILD_ROOT/build/$FF_BUILD_NAME_SPEEX/output/lib

case "$UNAME_S" in

CYGWIN_NT-*)

FF_SYSROOT="$(cygpath -am $FF_SYSROOT)"

FF_PREFIX="$(cygpath -am $FF_PREFIX)"

;;

esac

mkdir -p $FF_PREFIX

mkdir -p $FF_SYSROOT

FF_MAKEFLAGS=

if which nproc >/dev/null

then

FF_MAKEFLAGS=-jnproc

elif [ "$UNAMES" = "Darwin" ] && which sysctl >/dev/null

then

FF_MAKEFLAGS=-jsysctl -n machdep.cpu.thread_count

fi

FF_TOOLCHAIN_TOUCH="$FF_TOOLCHAIN_PATH/touch"

if [ ! -f "$FF_TOOLCHAIN_TOUCH" ]; then

$ANDROID_NDK/build/tools/make-standalone-toolchain.sh

$FF_MAKE_TOOLCHAIN_FLAGS

--platform=$FF_ANDROID_PLATFORM

--toolchain=$FF_TOOLCHAIN_NAME

touch $FF_TOOLCHAIN_TOUCH;

fi

#--------------------

echo ""

echo "--------------------"

echo "[*] check ffmpeg env"

echo "--------------------"

export PATH=$FF_TOOLCHAIN_PATH/bin/:$PATH

#export CC="ccache ${FF_CROSS_PREFIX}-gcc"

export CC="${FF_CROSS_PREFIX}-gcc"

export LD=${FF_CROSS_PREFIX}-ld

export AR=${FF_CROSS_PREFIX}-ar

export STRIP=${FF_CROSS_PREFIX}-strip

FF_CFLAGS="-O3 -Wall -pipe

-std=c99

-ffast-math

-fstrict-aliasing -Werror=strict-aliasing

-Wno-psabi -Wa,--noexecstack

-DANDROID -DNDEBUG"

cause av_strlcpy crash with gcc4.7, gcc4.8

-fmodulo-sched -fmodulo-sched-allow-regmoves

--enable-thumb is OK

#FF_CFLAGS="$FF_CFLAGS -mthumb"

not necessary

#FF_CFLAGS="$FF_CFLAGS -finline-limit=300"

export COMMON_FF_CFG_FLAGS=

. $FF_BUILD_ROOT/../../config/module.sh

#--------------------

with openssl

if [ -f "${FF_DEP_OPENSSL_LIB}/libssl.a" ]; then

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-nonfree"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-openssl"

FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_OPENSSL_INC}"

FF_DEP_LIBS="-L${FF_DEP_OPENSSL_LIB} -lssl -lcrypto"

fi

#--------------------

with speex

if [ -f "${FF_DEP_SPEEX_LIB}/libspeex.a" ]; then

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-nonfree"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-libspeex"

echo "------------- find speex -----------"

echo $FF_DEP_SPEEX_INC

echo $FF_DEP_SPEEX_LIB

echo "------------------------------------"

FF_CFLAGS="$FF_CFLAGS -I${FF_DEP_SPEEX_INC}"

FF_DEP_LIBS="-L${FF_DEP_SPEEX_LIB}"

fi

FF_CFG_FLAGS="$FF_CFG_FLAGS $COMMON_FF_CFG_FLAGS"

#--------------------

Standard options:

FF_CFG_FLAGS="$FF_CFG_FLAGS --prefix=$FF_PREFIX"

Advanced options (experts only):

FF_CFG_FLAGS="$FF_CFG_FLAGS --cross-prefix=${FF_CROSS_PREFIX}-"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-cross-compile"

FF_CFG_FLAGS="$FF_CFG_FLAGS --target-os=linux"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-pic"

FF_CFG_FLAGS="$FF_CFG_FLAGS --disable-symver"

Optimization options (experts only):

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-asm"

FF_CFG_FLAGS="$FF_CFG_FLAGS --enable-inline-asm"

#--------------------

echo ""

echo "--------------------"

echo "[*] configurate ffmpeg"

echo "--------------------"

cd $FF_SOURCE

if [ -f "./config.h" ]; then

echo 'reuse configure'

else

which $CC

./configure $FF_CFG_FLAGS

--extra-libs=-lgcc

--extra-cflags="$FF_CFLAGS $FF_EXTRA_CFLAGS"

--extra-ldflags="$FF_DEP_LIBS $FF_EXTRA_LDFLAGS"

make clean

fi

#--------------------

echo ""

echo "--------------------"

echo "[] compile ffmpeg"

echo "--------------------"

cp config. $FF_PREFIX

make $FF_MAKEFLAGS

make install

#--------------------

echo ""

echo "--------------------"

echo "[] link ffmpeg"

echo "--------------------"

echo $FF_EXTRA_LDFLAGS

$CC -lm -lz -shared --sysroot=$FF_SYSROOT -Wl,--no-undefined -Wl,-z,noexecstack $FF_EXTRA_LDFLAGS

-Wl,-soname,libnelpengine.so

compat/.o

libavutil/.o

libavcodec/.o

libavformat/.o

libswresample/.o

libswscale/*.o

$FF_ASM_OBJ_DIR

$FF_DEP_LIBS

-o $FF_PREFIX/libnelpengine.so

mysedi() {

f=$1

exp=$2

n=basename $f

cp $f /tmp/$n

sed $exp /tmp/$n > $f

rm /tmp/$n

}

echo ""

echo "--------------------"

echo "[] create files for shared ffmpeg"

echo "--------------------"

rm -rf $FF_PREFIX/shared

mkdir -p $FF_PREFIX/shared/lib/pkgconfig

ln -s $FF_PREFIX/include $FF_PREFIX/shared/include

ln -s $FF_PREFIX/libnelpengine.so $FF_PREFIX/shared/lib/libnelpengine.so

cp $FF_PREFIX/lib/pkgconfig/.pc $FF_PREFIX/shared/lib/pkgconfig

for f in $FF_PREFIX/lib/pkgconfig/*.pc; do

# in case empty dir

if [ ! -f $f ]; then

continue

fi

cp $f $FF_PREFIX/shared/lib/pkgconfig

f=$FF_PREFIX/shared/lib/pkgconfig/basename $f

# OSX sed doesn't have in-place(-i)

mysedi $f 's//output//output/shared/g'

mysedi $f 's/-lavcodec/-lnelpengine/g'

mysedi $f 's/-lavformat/-lnelpengine/g'

mysedi $f 's/-lavutil/-lnelpengine/g'

mysedi $f 's/-lswresample/-lnelpengine/g'

mysedi $f 's/-lswscale/-lnelpengine/g'

done

php 调用speex解码库,怎么增加speex解码库相关推荐

  1. linux添加自己的库,Linux学习笔记——例叙makefile 增加自定义共享库

    Linux学习笔记--例说makefile 增加自定义共享库 0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己 ...

  2. cmake使用教程(五)调用opencv外部库和自己生成的库

    这一节是我真正使用时遇到的,就是我需要构建动态库,但是这个动态库依赖外部的一些库如opencv.matlab等,那么若何构建这样的动态库呢?构建好如何测试呢?本篇将详细介绍其过程: 1.ubuntu安 ...

  3. ZIZI - A3 再自己的“库”中增加体现丰富意象的“线条”

    文章目录 1 设计思路 2 情绪线条设计 2.1 从安静到兴奋 2.2 浪漫---You are my angel. 2.3 焦虑的线 2.4 愤怒的线 2.5 悲伤的圆 3 创作出体现丰富意象感受的 ...

  4. c#脚本实现-CS-ScriP,支持脚本调用第三方dll文件,增加程序框架的强壮性

    背景:最近想提升下测试设备的方面的能力,yan测试设备的软件平台,前期朋友C#开发的,所有背景: 最近想提升下测试设备方面的知识及能力,研究下测试平台软件的开发,为了增加软件可扩展的强壮性,脚本是不错 ...

  5. C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别

    C++ 调用.lib的方法: 一: 隐式的加载时链接,有三种方法 1  LIB文件直接加入到工程文件列表中 在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add F ...

  6. 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案

    [走过巨坑]android studio对于jni调用及运行闪退无法加载库的问题解决方案 参考文章: (1)[走过巨坑]android studio对于jni调用及运行闪退无法加载库的问题解决方案 ( ...

  7. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

  8. Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略

    Python编程语言学习:在根目录的py文件内调用某叶目录文件内的包/库或者函数(常用在GUI编程)之详细攻略 目录

  9. Python与C之间的相互调用(Python C API及Python ctypes库)

    2010-01-24 17:58 14237人阅读 评论(11) 收藏 举报 目录(?)[-] Python C API 准备工作: C中内嵌Python 获取返回值 利用C扩展Python Pyth ...

  10. python如何封装成可调用的库_Python实现打包成库供别的模块调用

    1.创建python项目bricewulib 2.新建test_package包并创建info1类以及print_hello方法 3.为了让包的结构再复杂点,我们再在test_package下面新建一 ...

最新文章

  1. 秦川团队《科学》刊发研究:新冠感染恒河猴康复后不会再感染
  2. php实现 简单密码(代码颜色变化)
  3. 查看SAP CRM和C4C的UI technical信息
  4. java 8时间操作_Java8 时间日期类操作
  5. js reduce实现中间件_js数组高阶方法reduce经典用法代码分享
  6. unicode字符大全可复制_说说Excel不可见字符的那些事
  7. 多重索引DataFrame插入数据的方法探索
  8. PHP probuf详细步骤_【转】protobuffer php使用
  9. 用于UML前端展示的jsuml2插件
  10. kafka--Struct Streaming--mysql案例
  11. Java使用POI导出Excel
  12. Win7 64位系统下Auto CAD 2010注册激活,出现警告:Make sure you can write to current directory...
  13. 腾讯云即时通讯IM前端使用步骤简述
  14. 毫米波雷达测距/测速原理介绍_小七自学笔记
  15. photoshop cc 2018破解补丁(pscc2018注册机) 附使用方法
  16. 升级mac系统正在计算机,USB对拷线在苹果Mac系统的升级说明
  17. 报表控件Stimulsoft报告中的数据矩阵条形码介绍
  18. RDIFramework.NET 框架之组织机构权限设置
  19. mcnpf5输出结果_MCNP使用教程
  20. Heavy Transportation(Dijkstra算法)

热门文章

  1. windbg调试和断点学习总结2
  2. 写给大忙人看的操作系统
  3. 围棋棋盘有多少正方形 19*19
  4. 编写第一个Windows Mobile程序
  5. Windows Mobile 开发环境搭建
  6. Docker文档笔记
  7. 菜菜PyTorch深度学习框架最全笔记(第一次课)
  8. deepin驱动精灵_Deepin 20 Beta X64官方正式版(64位)
  9. 24小时改变你的人生 (1至12小时)很好的书,推荐大家有时间在网上看看。
  10. android8.0源码下载