我正在尝试在 Ubuntu 上构建我的 FFmpeg 库,它具有以下依赖项:
- libogg(/home/reccsi/Dev/build-x64/libogg)
- libvorbis(/home/reccsi/Dev/build-x64/libvorbis)
- libvpx(/home/reccsi/Dev/build-x64/libvpx)
- libopenssl(/home/reccsi/Dev/build-x64/libopenssl)
我已经成功构建了它们,并将 pkg-config 文件添加到 /usr/share/pkgconfig 中
但是,当我配置 FFmpeg 时,我得到了这个:
$ ./configure --prefix=/home/reccsi/Dev/build-x64/ffmpeg/ --pkg-config-flags="--static" --enable-shared --enable-libvpx --enable-libvorbis --enable-openssl --enable-pic --enable-debug
ERROR: openssl not found
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
[email protected] 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.
$
我认为这很奇怪,所以我查看了 config.log 并发现了这一点:
(...lots of text)
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <vpx/vpx_encoder.h>
2 #include <vpx/vp8cx.h>
3 long check_vpx_codec_vp8_cx(void) { return (long) vpx_codec_vp8_cx; }
4 int main(void) { return 0; }
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -c -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
gcc -Wl,--as-needed -Wl,-z,noexecstack -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -o /tmp/ffconf.gwkghql5 /tmp/ffconf.btwr26JX.o -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -lvorbisenc -lvorbis -logg -lm -llzma -lz -pthread
check_pkg_config vpx >= 1.3.0 vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_vp9_dx
pkg-config --exists --print-errors vpx >= 1.3.0
check_func_headers vpx/vpx_decoder.h vpx/vp8dx.h vpx_codec_vp9_dx -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread
check_ld cc -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread
check_cc -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <vpx/vpx_decoder.h>
2 #include <vpx/vp8dx.h>
3 long check_vpx_codec_vp9_dx(void) { return (long) vpx_codec_vp9_dx; }
4 int main(void) { return 0; }
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -c -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
gcc -Wl,--as-needed -Wl,-z,noexecstack -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -o /tmp/ffconf.gwkghql5 /tmp/ffconf.btwr26JX.o -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -lvorbisenc -lvorbis -logg -lm -llzma -lz -pthread
check_pkg_config vpx >= 1.3.0 vpx/vpx_encoder.h vpx/vp8cx.h vpx_codec_vp9_cx
pkg-config --exists --print-errors vpx >= 1.3.0
check_func_headers vpx/vpx_encoder.h vpx/vp8cx.h vpx_codec_vp9_cx -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread
check_ld cc -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread
check_cc -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <vpx/vpx_encoder.h>
2 #include <vpx/vp8cx.h>
3 long check_vpx_codec_vp9_cx(void) { return (long) vpx_codec_vp9_cx; }
4 int main(void) { return 0; }
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -c -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
gcc -Wl,--as-needed -Wl,-z,noexecstack -I/home/reccsi/Dev/build-x64/libvpx/include -L/home/reccsi/Dev/build-x64/libvpx/lib -o /tmp/ffconf.gwkghql5 /tmp/ffconf.btwr26JX.o -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -L/home/reccsi/Dev/build-x64/libvpx/lib -lvpx -lm -lpthread -lvorbisenc -lvorbis -logg -lm -llzma -lz -pthread
check_pkg_config openssl openssl/ssl.h SSL_library_init
pkg-config --exists --print-errors openssl
check_func_headers openssl/ssl.h SSL_library_init -lssl -lcrypto -ldl
check_ld cc -lssl -lcrypto -ldl
check_cc
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <openssl/ssl.h>
2 long check_SSL_library_init(void) { return (long) SSL_library_init; }
3 int main(void) { return 0; }
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -c -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
In file included from /usr/include/openssl/evp.h:66:0,
from /usr/include/openssl/x509.h:73,
from /usr/include/openssl/ssl.h:156,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/local/include/openssl/opensslconf.h:18:3: error: #error OPENSSL_ALGORITHM_DEFINES no longer supported
# error OPENSSL_ALGORITHM_DEFINES no longer supported
^
In file included from /usr/include/openssl/ssl.h:165:0,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/include/openssl/kssl.h:72:18: fatal error: krb5.h: No such file or directory
#include <krb5.h>
^
compilation terminated.
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto
check_header openssl/ssl.h
check_cpp
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <openssl/ssl.h>
2 int x;
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -E -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
In file included from /usr/include/openssl/evp.h:66:0,
from /usr/include/openssl/x509.h:73,
from /usr/include/openssl/ssl.h:156,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/local/include/openssl/opensslconf.h:18:3: error: #error OPENSSL_ALGORITHM_DEFINES no longer supported
# error OPENSSL_ALGORITHM_DEFINES no longer supported
^
In file included from /usr/include/openssl/ssl.h:165:0,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/include/openssl/kssl.h:72:18: fatal error: krb5.h: No such file or directory
#include <krb5.h>
^
compilation terminated.
check_lib openssl/ssl.h SSL_library_init -lssl32 -leay32
check_header openssl/ssl.h
check_cpp
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <openssl/ssl.h>
2 int x;
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -E -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
In file included from /usr/include/openssl/evp.h:66:0,
from /usr/include/openssl/x509.h:73,
from /usr/include/openssl/ssl.h:156,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/local/include/openssl/opensslconf.h:18:3: error: #error OPENSSL_ALGORITHM_DEFINES no longer supported
# error OPENSSL_ALGORITHM_DEFINES no longer supported
^
In file included from /usr/include/openssl/ssl.h:165:0,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/include/openssl/kssl.h:72:18: fatal error: krb5.h: No such file or directory
#include <krb5.h>
^
compilation terminated.
check_lib openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32
check_header openssl/ssl.h
check_cpp
BEGIN /tmp/ffconf.2Hr4i7dx.c
1 #include <openssl/ssl.h>
2 int x;
END /tmp/ffconf.2Hr4i7dx.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c99 -fomit-frame-pointer -fPIC -pthread -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -I/home/reccsi/Dev/build-x64/libvpx/include -E -o /tmp/ffconf.btwr26JX.o /tmp/ffconf.2Hr4i7dx.c
In file included from /usr/include/openssl/evp.h:66:0,
from /usr/include/openssl/x509.h:73,
from /usr/include/openssl/ssl.h:156,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/local/include/openssl/opensslconf.h:18:3: error: #error OPENSSL_ALGORITHM_DEFINES no longer supported
# error OPENSSL_ALGORITHM_DEFINES no longer supported
^
In file included from /usr/include/openssl/ssl.h:165:0,
from /tmp/ffconf.2Hr4i7dx.c:1:
/usr/include/openssl/kssl.h:72:18: fatal error: krb5.h: No such file or directory
#include <krb5.h>
^
compilation terminated.
ERROR: openssl not found
还有谁经历过这种情况吗?
答案1
$ git clone https://github.com/FFmpeg/FFmpeg.git
$ cd FFmpeg
$ ./configure --help | egrep -i '(ssl|tls)'
if openssl, librtmp or gmp is not used [no]
if openssl or librtmp is not used [no]
--enable-gnutls enable gnutls, needed for https support
if openssl is not used [no]
--enable-openssl enable openssl, needed for https support
if gnutls is not used [no]
--disable-schannel disable SChannel SSP, needed for TLS support on
Windows if openssl and gnutls are not used [autodetect]
--disable-securetransport disable Secure Transport, needed for TLS support
on OSX if openssl and gnutls are not used [autodetect]
因此看起来您使用 启用了--enable-openssl
,但是您以老式的方式添加了标题和库:
$ export CFLAGS="-I/usr/local/ssl/include -L/usr/local/ssl/lib -Wl,-rpath=/usr/local/ssl/lib"
$ CFLAGS="$CFLAGS" CXXFLAGS="$CFLAGS" ./configure --enable-openssl
...
configure
应完整openssl
列出外部库:
install prefix /usr/local
source path .
C compiler gcc
C library
ARCH x86 (generic)
big-endian no
runtime cpu detection yes
nasm yes
...
SSE enabled yes
SSSE3 enabled yes
AESNI enabled yes
AVX enabled yes
XOP enabled yes
...
makeinfo enabled yes
makeinfo supports HTML no
Enabled programs:
ffmpeg ffprobe ffserver
External libraries:
bzlib libxcb_shape openssl
iconv libxcb_shm videotoolbox
libxcb libxcb_xfixes zlib
...
如果你检查config.log
,你会看到类似以下内容:
check_func_headers openssl/ssl.h SSL_library_init -I/opt/local/include -L/opt/local/lib -lssl -lcrypto
check_ld cc -I/opt/local/include -L/opt/local/lib -lssl -lcrypto
check_cc -I/opt/local/include -L/opt/local/lib
BEGIN /var/folders/mk/y7lk0xrx72lcn_2q3d12jcch0000gn/T//ffconf.FRvR3v3L.c
1 #include <openssl/ssl.h>
2 long check_SSL_library_init(void) { return (long) SSL_library_init; }
3 int main(void) { return 0; }
告诉SSL_library_init
我 FFmpeg 只能与 OpenSSL 1.0.2 及以下版本一起使用。其他测试应适用于 OpenSSL 1.1.0 及以上版本。另请参阅编译和安装 | Autoconf在 OpenSSL wiki 上。