首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉编译ffmpeg : libvpx解码器版本必须为>=0.9.1

交叉编译ffmpeg : libvpx解码器版本必须为>=0.9.1
EN

Stack Overflow用户
提问于 2016-08-25 08:54:00
回答 1查看 1.9K关注 0票数 0

(注意:我知道标题几乎与this question相同,但它的解决方案只有在我自己的系统上构建时才适用。我正在构建一个嵌入式ARM设备。)

我正在尝试构建一个针对arm设备的交叉编译的FFmpeg库,而./configure命令告诉我libvpx已经过时。

我的libvpx版本如下:

代码语言:javascript
复制
$ pkg-config --modversion vorbis 
1.3.2

当我运行./configure时

代码语言:javascript
复制
$ ./configure --prefix=/home/test/Dev/build-arm/ffmpeg-armhf/ --enable-cross-compile --cross-prefix=${CCPREFIX} --arch=armhf --target-os=linux --pkg-config-flags="--libs vpx --static --cflags" --enable-shared --enable-libvpx 
ERROR: libvpx decoder version must be >=0.9.1

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.log" produced by configure as this will help
solve the problem.

我的vpx.pc文件位于/usr/share/pkgconfig中。由于它用于不同的目标(arm),我应该将此文件放在其他地方吗?:

代码语言:javascript
复制
# pkg-config file from libvpx v1.6.0-322-gc325fb7
prefix=/home/test/Dev/build-arm/libvpx
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include

Name: vpx
Description: WebM Project VPx codec implementation
Version: 1.6.0
Requires:
Conflicts:
Libs: -L${libdir} -lvpx -lm
Libs.private: -lm -lpthread
Cflags: -I${includedir}

在我的config.log中,我看到了以下内容:

代码语言:javascript
复制
(...lots of text...)
arm-openwrt-linux-gnueabi-gcc -Werror=missing-prototypes -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -march=armv7-a -std=c99 -fomit-frame-pointer -marm -fPIC -pthread -c -o /tmp/ffconf.cZcBLWc3.o /tmp/ffconf.sWjTIULb.m
arm-openwrt-linux-gnueabi-gcc: /tmp/ffconf.sWjTIULb.m: Objective-C compiler not installed on this system
check_pkg_config vpx >= 0.9.1 vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_vp8_dx
false --exists --print-errors vpx >= 0.9.1
check_lib2 vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_dec_init_ver -lvpx
check_func_headers vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_dec_init_ver -lvpx
check_ld cc -lvpx
check_cc
BEGIN /tmp/ffconf.gM9G9FSQ.c
    1   #include <vpx/vpx_decoder.h>
    2   #include <vpx/vp8dx.h>
    3   long check_vpx_codec_dec_init_ver(void) { return (long) vpx_codec_dec_init_ver; }
    4   int main(void) { return 0; }
END /tmp/ffconf.gM9G9FSQ.c
arm-openwrt-linux-gnueabi-gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -march=armv7-a -std=c99 -fomit-frame-pointer -marm -fPIC -pthread -c -o /tmp/ffconf.cZcBLWc3.o /tmp/ffconf.gM9G9FSQ.c
/tmp/ffconf.gM9G9FSQ.c:1:29: fatal error: vpx/vpx_decoder.h: No such file or directory
compilation terminated.
ERROR: libvpx decoder version must be >=0.9.1

看起来include和库路径没有提供给编译器,但我不知道该如何解决这个问题。如果你能给我一些指导,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 10:47:08

找到了。

我的库位于

代码语言:javascript
复制
/home/test/Dev/build-arm/libvpx/lib

但是查询pkg-config会给出

代码语言:javascript
复制
$ arm-openwrt-linux-gnueabi-pkg-config --libs vpx
-L/home/test/Dev/build-arm/home/test/Dev/build-arm/libvpx/lib -lvpx

原来我的arm-openwrt-linux-gnueabi-pkg-config脚本是错误的。

代码语言:javascript
复制
#!/bin/sh

SYSROOT=/home/test/Dev/build-arm 
export PKG_CONFIG_LIBDIR=${SYSROOT}/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=${SYSROOT}

exec pkg-config "$@"

这是正确的版本,现在可以工作了。

代码语言:javascript
复制
#!/bin/sh

SYSROOT=/home/test/Dev/build-arm 
export PKG_CONFIG_LIBDIR=${SYSROOT}/pkgconfig
export PKG_CONFIG_SYSROOT_DIR=

exec pkg-config "$@"

感谢relaxed和furq的帮助(#ffmpeg irc.freenode.net)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39135103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档