Warm tip: This article is reproduced from serverfault.com, please click

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

(c++ - Android FFmpeg : Undefined references to atof, log2 & log2f)

发布于 2017-10-09 14:13:18

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

以下是我的链接器列表:

-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的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

问题:
我缺少链接到哪个库?

Questioner
TheWaterProgrammer
Viewed
0
Ray Hunter 2018-11-30 14:41:32

我遇到了与平台ffmpeg-2.8.15一起x264使用来构建此问题我更新了要使用的代码,并编译了代码,没有任何问题。我们的最低SDK版本为ndk-r10eandroid-15android-2121