2017-08-23 1 views
0

Je suis en train de construire Essentia (https://github.com/MTG/essentia), une bibliothèque d'analyse audio, avec Gaia (https://github.com/MTG/gaia) soutien Debian 9.0 de la source. Avant cela, l'une de ses dépendances, à savoir Gaia, a été construite avec succès, également, à partir de la source. Il a été installé dans /usr/local/.bibliothèque d'analyse audio du bâtiment Essentia a échoué avec le soutien Gaia

En ce qui concerne Essentia, la compilation des sources échoue avec les erreurs suivantes:

[...] 
     In file included from ../src/algorithms/essentia_algorithms_reg.cpp:21:0: 
    ../src/algorithms/highlevel/gaiatransform.h: At global scope: 
    ../src/algorithms/highlevel/gaiatransform.h:37:10: error: ‘TransfoChain’ in namespace ‘gaia2’ does not name a type 
     gaia2::TransfoChain _history; 
       ^~~~~~~~~~~~ 
    ../src/algorithms/highlevel/gaiatransform.h: In constructor ‘essentia::standard::GaiaTransform::GaiaTransform()’: 
    ../src/algorithms/highlevel/gaiatransform.h:47:5: error: ‘init’ is not a member of ‘gaia2’ 
     gaia2::init(); 
     ^~~~~ 
    ../src/algorithms/highlevel/gaiatransform.h:47:5: note: suggested alternative: 
    In file included from ../src/essentia/algorithmfactory.h:27:0, 
        from ../src/algorithms/essentia_algorithms_reg.cpp:1: 
    ../src/essentia/essentia.h:46:6: note: ‘essentia::init’ 
    void init(); 
      ^~~~ 

Le fichier où l'erreur se trouve est /src/algorithms/essentia_algorithms_reg.cpp et voici la commande que le fichier est compilé avec:

/usr/bin/g++ -pipe -Wall -std=c++03 -msse -msse2 -mfpmath=sse -O2 -fPIC -pthread -Isrc -I../src -Isrc/essentia -I../src/essentia -Isrc/essentia/scheduler -I../src/essentia/scheduler -Isrc/essentia/streaming -I../src/essentia/streaming -Isrc/essentia/streaming/algorithms -I../src/essentia/streaming/algorithms -Isrc/essentia/utils -I../src/essentia/utils -Isrc/3rdparty -I../src/3rdparty -Isrc/3rdparty/spline -I../src/3rdparty/spline -Isrc/3rdparty/vamp-plugin-sdk-2.4 -I../src/3rdparty/vamp-plugin-sdk-2.4 -I/usr/include/x86_64-linux-gnu -I/usr/include/taglib -I/usr/local/include -I/usr/include/qt4 -I/usr/include/qt4/QtCore -I/usr/local/include/gaia2/ -DHAVE_AVCODEC=1 -DHAVE_AVFORMAT=1 -DHAVE_AVUTIL=1 -DHAVE_AVRESAMPLE=1 -DHAVE_SAMPLERATE=1 -DHAVE_TAGLIB=1 -DHAVE_YAML=1 -DHAVE_FFTW=1 -DHAVE_GAIA2=1 -D__STDC_CONSTANT_MACROS -DPYTHONDIR="/usr/local/lib/python2.7/dist-packages" -DPYTHONARCHDIR="/usr/local/lib/python2.7/dist-packages" -DHAVE_PYEMBED=1 -DHAVE_PYEXT=1 -DHAVE_PYTHON_H=1 ../src/algorithms/essentia_algorithms_reg.cpp -c -o/home/hamidi/essentia/build/src/algorithms/essentia_algorithms_reg.cpp.1.o -fPIC -v 

g++ L'option -v m'a donné les chemins réels visités par l'éditeur de liens (rien de mauvais là-dedans, je pense, mais par souci d'exhaustivité):

#include "..." search starts here: 
#include <...> search starts here: 
src 
../src 
src/essentia 
../src/essentia 
src/essentia/scheduler 
../src/essentia/scheduler 
src/essentia/streaming 
../src/essentia/streaming 
src/essentia/streaming/algorithms 
../src/essentia/streaming/algorithms 
src/essentia/utils 
../src/essentia/utils 
src/3rdparty 
../src/3rdparty 
src/3rdparty/spline 
../src/3rdparty/spline 
src/3rdparty/vamp-plugin-sdk-2.4 
../src/3rdparty/vamp-plugin-sdk-2.4 
/usr/include/taglib 
/usr/include/qt4 
/usr/include/qt4/QtCore 
/usr/local/include/gaia2/ 
/usr/include/c++/6 
/usr/include/x86_64-linux-gnu/c++/6 
/usr/include/c++/6/backward 
/usr/lib/gcc/x86_64-linux-gnu/6/include 
/usr/local/include 
/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed 
/usr/include/x86_64-linux-gnu 
/usr/include 
End of search list. 

Voici les fichiers (repo github) impliqués dans l'erreur:

  • MTG/gaia/blob/maître/src/gaia.h

  • MTG/gaia/blob/maître/src/transformation.h # L106

  • /MTG/essentia/blob/master/src/algorithms/highlevel/gaiatransform.h

Répondre

0

C'est finalement une erreur qui s'est produite lors de la configuration Gaia qui a causé le problème. En fait, plutôt que d'utiliser simplement les options suivantes pour la configuration:

./waf configure --with-python-bindings --with-asserts --with-cyclops 

l'option --with-stlfacade a été ajouté par mégarde. Cette option n'est pas compatible si vous utilisez Gaia en conjonction avec Essentia.