Android FFmpeg:对atof,log2和log2f的未定义引用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android FFmpeg:对atof,log2和log2f的未定义引用相关的知识,希望对你有一定的参考价值。

我正在尝试使用android-ndk-r15c链接到为android构建的FFmpeg。我通过下载最新的ffmpeg-3.3.4的FFmpeg source来构建它。

以下是我的链接器列表:

-lavformat -lavcodec -lswscale -lavutil -lavfilter -lswresample -lavdevice -lpostproc

我抱怨以下错误

libavformat/hls.c:783: error: undefined reference to 'atof'
libavcodec/ffv1enc.c:146: error: undefined reference to 'log2'
libavcodec/imc.c:428: error: undefined reference to 'log2f'

以下是我的FFmpeg相关内容包括:

#include <stdint.h>
#include <cstdlib>

#define __STDC_CONSTANT_MACROS

extern "C" {

#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/mathematics.h"
#include "libavcodec/version.h"
#include "libavutil/rational.h"
#include "libavutil/avstring.h"
#include "libswscale/swscale.h"

}

以下是我用于交叉编译FFmpeg for android的buildscript:

#!/bin/bash

cd ffmpeg-3.3.4

NDK=/path/to/ndk/android-ndk-r15c
SYSROOT=$NDK/platforms/android-21/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar
CPREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-ar
CC=$TOOLCHAIN/bin/arm-linux-androideabi-gcc
CXX=$TOOLCHAIN/bin/arm-linux-androideabi-g++
LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld
RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib
STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip

function build_ffmpeg_android {

./configure 
    --prefix=$PREFIX 
    --disable-stripping 
    --arch=arm 
    --cpu=cortex-a8 
    --target-os=linux 
    --enable-cross-compile 
    --enable-debug 
    --enable-pic 
    --disable-programs 
    --enable-static 
    --disable-shared 
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
    --disable-doc 
    --enable-postproc 
    --enable-swscale 
    --enable-avfilter 
    --enable-avresample 
    --disable-opencl 
    --disable-securetransport 
    --sysroot=$SYSROOT 
    --enable-videotoolbox 
    --enable-avresample 
    --disable-symver 
    #--enable-gpl 
    #--enable-libx264
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make -j9
    make install
}

CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"

build_ffmpeg_android

题: 我错过了哪个图书馆链接?

答案

我遇到了这个问题,使用ffmpeg-2.8.15和平台x264ndk-r10e建立android-15。我更新了代码以使用android-21并且它编译代码没有任何问题。我们的min sdk版本是21

以上是关于Android FFmpeg:对atof,log2和log2f的未定义引用的主要内容,如果未能解决你的问题,请参考以下文章

Android FFMPEG 开发Android 中使用 FFMPEG 对 MP3 文件进行混音操作

cannot locate symbol "atof" referenced by错误分析

Android开发问题记录

为啥 OSX 将 atoi/atof 记录为不是线程安全的?

Android FFmpeg音视频解码播放

如何在android中构建和使用ffmpeg