MTG / essentia

C++ library for audio and music analysis, description and synthesis, including Python bindings
http://essentia.upf.edu
GNU Affero General Public License v3.0
2.86k stars 534 forks source link

Cannot compile v2.1.beta3 Ubuntu 16.04 #558

Closed melkor169 closed 7 years ago

melkor169 commented 7 years ago

Hello, I am trying to compile the latest stable build with no success using your guide. I have tried different configurations, and only compiles with lightweight parameters or no parameters at all.. But if it compiles I cannot install it and/or use it on python code. I attach the error

Thanks in advance

[313/346] cxxprogram: build/src/examples/standard_sinesubtraction.cpp.34.o -> build/src/examples/essentia_standard_sinesubtraction src/libessentia.a(metadatareader.cpp.1.o): In function formatString(TagLib::StringList const&)': metadatareader.cpp:(.text+0x14f1): undefined reference toTagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x157d): undefined reference to TagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x15b4): undefined reference toTagLib::String::to8Bit(bool) const' src/libessentia.a(metadatareader.cpp.1.o): In function essentia::standard::MetadataReader::compute()': metadatareader.cpp:(.text+0x2a4d): undefined reference toTagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x2c2f): undefined reference to TagLib::String::to8Bit(bool) const' collect2: error: ld returned 1 exit status src/libessentia.a(metadatareader.cpp.1.o): In functionformatString(TagLib::StringList const&)': metadatareader.cpp:(.text+0x14f1): undefined reference to TagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x157d): undefined reference toTagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x15b4): undefined reference to TagLib::String::to8Bit(bool) const' src/libessentia.a(metadatareader.cpp.1.o): In functionessentia::standard::MetadataReader::compute()': metadatareader.cpp:(.text+0x2a4d): undefined reference to TagLib::String::to8Bit(bool) const' metadatareader.cpp:(.text+0x2c2f): undefined reference toTagLib::String::to8Bit(bool) const' collect2: error: ld returned 1 exit status Waf: Leaving directory `/home/*****/essentia-2.1_beta3/build' Build failed -> task in 'essentia_standard_hprmodel' failed (exit status 1): {task 139761562831824: cxxprogram standard_hprmodel.cpp.40.o -> essentia_standard_hprmodel} ['/usr/bin/g++', 'src/examples/standard_hprmodel.cpp.40.o', '-o', '/home/dimos/essentia-2.1_beta3/build/src/examples/essentia_standard_hprmodel', '-Wl,-Bstatic', '-Lsrc', '-lessentia', '-Wl,-Bdynamic', '-L../../../../usr/lib/x86_64-linux-gnu', '-lpthread', '-lfftw3f', '-lavformat-ffmpeg', '-lavcodec-ffmpeg', '-lavutil-ffmpeg', '-lavresample-ffmpeg', '-lsamplerate', '-ltag', '-lyaml'] -> task in 'essentia_standard_sinesubtraction' failed (exit status 1): {task 139761562829840: cxxprogram standard_sinesubtraction.cpp.34.o -> essentia_standard_sinesubtraction} ['/usr/bin/g++', 'src/examples/standard_sinesubtraction.cpp.34.o', '-o', '/home/dimos/essentia-2.1_beta3/build/src/examples/essentia_standard_sinesubtraction', '-Wl,-Bstatic', '-Lsrc', '-lessentia', '-Wl,-Bdynamic', '-L../../../../usr/lib/x86_64-linux-gnu', '-lpthread', '-lfftw3f', '-lavformat-ffmpeg', '-lavcodec-ffmpeg', '-lavutil-ffmpeg', '-lavresample-ffmpeg', '-lsamplerate', '-ltag', '-lyaml']

alastair commented 7 years ago

It looks like you have a problem linking against taglib. How did you install taglib? From a distribution package or from source?

Please attach your build/config.log file

melkor169 commented 7 years ago

Hello alastair!

I think i tried both..Now I have installed the latest through source code. Again have the same error. Is there any way to exclude taglib..I think I wont use it

I attach the log file

# project essentia (2.1-beta3) configured on Thu Jan 26 13:23:17 2017 by
# waf 1.7.9 (abi 98, python 2070cf0 on linux2)
# using ./waf configure --mode=release --build-static --with-python --with-cpptests --with-examples --with-vamp
#
----------------------------------------
Setting top to
/home/dimos/essentia-2.1_beta3
----------------------------------------
Setting out to
/home/dimos/essentia-2.1_beta3/build
----------------------------------------
Checking for 'g++' (c++ compiler)
find program=['g++', 'c++'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='CXX' -> '/usr/bin/g++'
find program=['ar'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='AR' -> '/usr/bin/ar'
/usr/bin/g++
----------------------------------------
Checking for 'gcc' (c compiler)
find program=['gcc', 'cc'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='CC' -> '/usr/bin/gcc'
(tool ar is already loaded, skipping)
/usr/bin/gcc
----------------------------------------
Checking for program pkg-config
/usr/bin/pkg-config
find program=['pkg-config'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='PKGCONFIG' -> '/usr/bin/pkg-config'
----------------------------------------
Checking for 'libavcodec' >= 55.34.1
['/usr/bin/pkg-config', 'libavcodec >= 55.34.1', '--cflags', '--libs', 'libavcodec']
out: -I/usr/include/x86_64-linux-gnu -lavcodec-ffmpeg

yes
----------------------------------------
Checking for 'libavformat'
['/usr/bin/pkg-config', '--cflags', '--libs', 'libavformat']
out: -I/usr/include/x86_64-linux-gnu -lavformat-ffmpeg

yes
----------------------------------------
Checking for 'libavutil'
['/usr/bin/pkg-config', '--cflags', '--libs', 'libavutil']
out: -I/usr/include/x86_64-linux-gnu -lavutil-ffmpeg

yes
----------------------------------------
Checking for 'libavresample'
['/usr/bin/pkg-config', '--cflags', '--libs', 'libavresample']
out: -I/usr/include/x86_64-linux-gnu -lavresample-ffmpeg

yes
----------------------------------------
Checking for 'samplerate'
['/usr/bin/pkg-config', '--cflags', '--libs', 'samplerate']
out: -lsamplerate

yes
----------------------------------------
Checking for 'taglib' >= 1.9
['/usr/bin/pkg-config', 'taglib >= 1.9', '--cflags', '--libs', 'taglib']
out: -I/usr/local/include/taglib -L/usr/local/lib -ltag

yes
----------------------------------------
Checking for 'yaml-0.1'
['/usr/bin/pkg-config', '--cflags', '--libs', 'yaml-0.1']
out: -lyaml

yes
----------------------------------------
Checking for 'fftw3f'
['/usr/bin/pkg-config', '--cflags', '--libs', 'fftw3f']
out: -lfftw3f

yes
----------------------------------------
Checking for program python
/usr/bin/python
find program=['python'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='PYTHON' -> '/usr/bin/python'
['/usr/bin/python', '-c', 'import sys\nfor x in sys.version_info: print(str(x))']
out: 2
7
12
final
0

['/usr/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_python_lib(standard_lib=0, prefix='/usr/local') or ''))"]
out: '/usr/local/lib/python2.7/dist-packages'

'/usr/local/lib/python2.7/dist-packages'

['/usr/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_python_lib(plat_specific=1, standard_lib=0, prefix='/usr/local') or ''))"]
out: '/usr/local/lib/python2.7/dist-packages'

'/usr/local/lib/python2.7/dist-packages'

----------------------------------------
Checking for python version
(2, 7, 12, 'final', 0)
['/usr/bin/python', '-c', "from distutils.sysconfig import get_config_var, get_python_lib\n\nprint(repr(get_config_var('prefix') or ''))\nprint(repr(get_config_var('SO') or ''))\nprint(repr(get_config_var('LDFLAGS') or ''))\nprint(repr(get_config_var('LIBDIR') or ''))\nprint(repr(get_config_var('LIBPL') or ''))\nprint(repr(get_config_var('INCLUDEPY') or ''))\nprint(repr(get_config_var('Py_ENABLE_SHARED') or ''))\nprint(repr(get_config_var('MACOSX_DEPLOYMENT_TARGET') or ''))\nprint(repr(get_config_var('LDSHARED') or ''))\nprint(repr(get_config_var('CFLAGS') or ''))"]
out: '/usr'
'.so'
'-Wl,-Bsymbolic-functions -Wl,-z,relro'
'/usr/lib'
'/usr/lib/python2.7/config-x86_64-linux-gnu'
'/usr/include/python2.7'
1
''
'x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '
'-fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '

'/usr'
'.so'
'-Wl,-Bsymbolic-functions -Wl,-z,relro'
'/usr/lib'
'/usr/lib/python2.7/config-x86_64-linux-gnu'
'/usr/include/python2.7'
1
''
'x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '
'-fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '

Configuration returned from ['/usr/bin/python']:
"prefix = '/usr'\nSO = '.so'\nLDFLAGS = '-Wl,-Bsymbolic-functions -Wl,-z,relro'\nLIBDIR = '/usr/lib'\nLIBPL = '/usr/lib/python2.7/config-x86_64-linux-gnu'\nINCLUDEPY = '/usr/include/python2.7'\nPy_ENABLE_SHARED = 1\nMACOSX_DEPLOYMENT_TARGET = ''\nLDSHARED = 'x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '\nCFLAGS = '-fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security  '"

# try again with -L$python_LIBDIR: ['/usr/lib']

----------------------------------------
Checking for library python2.7 in LIBDIR
==>

int main(int argc, char **argv) {
    (void)argc; (void)argv;
    return 0;
}

<==
[1/2] cxx: build/.conf_check_3b2479b91ea1f8aedc2bbc867fa4858e/test.cpp -> build/.conf_check_3b2479b91ea1f8aedc2bbc867fa4858e/testbuild/test.cpp.1.o

['/usr/bin/g++', '-pipe', '-Wall', '-msse', '-msse2', '-mfpmath=sse', '-O2', '-fPIC', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector-strong', '-fPIC', '-DHAVE_AVCODEC=1', '-DHAVE_AVFORMAT=1', '-DHAVE_AVUTIL=1', '-DHAVE_AVRESAMPLE=1', '-DHAVE_SAMPLERATE=1', '-DHAVE_TAGLIB=1', '-DHAVE_YAML=1', '-DHAVE_FFTW=1', '-D__STDC_CONSTANT_MACROS', '-DPYTHONDIR="/usr/local/lib/python2.7/dist-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python2.7/dist-packages"', '-DNDEBUG', '-D_FORTIFY_SOURCE=2', '../test.cpp', '-c', '-o', 'test.cpp.1.o']
[2/2] cxxprogram: build/.conf_check_3b2479b91ea1f8aedc2bbc867fa4858e/testbuild/test.cpp.1.o -> build/.conf_check_3b2479b91ea1f8aedc2bbc867fa4858e/testbuild/testprog

['/usr/bin/g++', '-Wl,-Bsymbolic-functions', '-Wl,-z,relro', 'test.cpp.1.o', '-o', '/home/dimos/essentia-2.1_beta3/build/.conf_check_3b2479b91ea1f8aedc2bbc867fa4858e/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-L/usr/lib', '-lpython2.7']
yes
------------------------------------------------------------------------------------------------
Checking for program /usr/bin/python-config,python2.7-config,python-config-2.7,python2.7m-config
/usr/bin/python-config
find program=['/usr/bin/python-config', 'python2.7-config', 'python-config-2.7', 'python2.7m-config'] paths=['/usr/local/sbin', '/usr/local/bin', '/usr/sbin', '/usr/bin', '/sbin', '/bin', '/usr/games', '/usr/local/games', '/snap/bin', '/usr/lib/jvm/java-7-oracle/bin', '/usr/lib/jvm/java-7-oracle/db/bin', '/usr/lib/jvm/java-7-oracle/jre/bin'] var='PYTHON_CONFIG' -> '/usr/bin/python-config'
['/usr/bin/python-config', '--includes']
out: -I/usr/include/python2.7 -I/usr/include/x86_64-linux-gnu/python2.7

Include path for Python extensions (found via python-config --includes): ['/usr/include/python2.7', '/usr/include/x86_64-linux-gnu/python2.7']

------------------------------------------------------------------------------------------------
Checking for header Python.h
==>

#include <Python.h>
#ifdef __cplusplus
extern "C" {
#endif
    void Py_Initialize(void);
    void Py_Finalize(void);
#ifdef __cplusplus
}
#endif
int main(int argc, char **argv)
{
   (void)argc; (void)argv;
   Py_Initialize();
   Py_Finalize();
   return 0;
}

<==
[1/2] cxx: build/.conf_check_1f933b02106127ce3a9f4633a0e368e7/test.cpp -> build/.conf_check_1f933b02106127ce3a9f4633a0e368e7/testbuild/test.cpp.1.o

['/usr/bin/g++', '-pipe', '-Wall', '-msse', '-msse2', '-mfpmath=sse', '-O2', '-fPIC', '-pthread', '-fno-strict-aliasing', '-fwrapv', '-fstack-protector-strong', '-fno-strict-aliasing', '-fPIC', '-I/usr/include/python2.7', '-I/usr/include/x86_64-linux-gnu/python2.7', '-DHAVE_AVCODEC=1', '-DHAVE_AVFORMAT=1', '-DHAVE_AVUTIL=1', '-DHAVE_AVRESAMPLE=1', '-DHAVE_SAMPLERATE=1', '-DHAVE_TAGLIB=1', '-DHAVE_YAML=1', '-DHAVE_FFTW=1', '-D__STDC_CONSTANT_MACROS', '-DPYTHONDIR="/usr/local/lib/python2.7/dist-packages"', '-DPYTHONARCHDIR="/usr/local/lib/python2.7/dist-packages"', '-DNDEBUG', '-D_FORTIFY_SOURCE=2', '../test.cpp', '-c', '-o', 'test.cpp.1.o']
[2/2] cxxprogram: build/.conf_check_1f933b02106127ce3a9f4633a0e368e7/testbuild/test.cpp.1.o -> build/.conf_check_1f933b02106127ce3a9f4633a0e368e7/testbuild/testprog

['/usr/bin/g++', '-Wl,-Bsymbolic-functions', '-Wl,-z,relro', 'test.cpp.1.o', '-o', '/home/dimos/essentia-2.1_beta3/build/.conf_check_1f933b02106127ce3a9f4633a0e368e7/testbuild/testprog', '-Wl,-Bstatic', '-Wl,-Bdynamic', '-L/usr/lib', '-lpython2.7']
yes
dbogdanov commented 7 years ago

You can use --ignore-algos=MetadataReader flag in waf configure to ignore MetadataReader

melkor169 commented 7 years ago

Works like a charm with this flag! Thanx