Estoy tratando de construir mi biblioteca FFmpeg en Ubuntu con las siguientes dependencias:
- 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)
Los construí todos con éxito y agregué los archivos pkg-config a / usr / share / pkgconfig
Sin embargo, cuando configuro FFmpeg obtengo esto:
$ ./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.
$
Pensé que era extraño, así que busqué en config.log y encontré esto:
(...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
¿Alguien más ha visto esto experimentado?
Respuestas:
Por lo tanto, parece que habilita con
--enable-openssl
, pero agrega encabezados y bibliotecas a la antigua usanza:configure
debe completar con unaopenssl
lista como una biblioteca externa:Y si inspeccionas
config.log
, verás algo similar a:El
SSL_library_init
me dice que FFmpeg solo se puede usar con OpenSSL 1.0.2 y versiones posteriores. Se deben usar otras pruebas para OpenSSL 1.1.0 y superior. Ver también Compilación e Instalación | Autoconf en la wiki de OpenSSL.fuente
CFLAGS
andCXXFLAGS
away para todos los proyectos de Autotool. Los molestos proyectos basados en Autotool son los que ignoranCFLAGS
y,CXXFLAGS
por lo tanto, debes hackear los archivos MAKE generados. Y siempre trate de usar-Wl,-rpath=/usr/local/ssl/lib
en Linux cuando compila contra un OpenSSL (u otras bibliotecas) no estándar.