I was facing another issue where the essentia build process could not find some gaia headers (can discuss in a future issue), and attempting the build without the --with-gaia option fails as follows:
for reference, this was the configure command:
./waf configure --mode=release --build-static --with-python --with-cpptests --with-examples --with-vamp
Looking forward to your assistance!
/usr/bin/ld: test/3rdparty/gtest-1.6.0/src/gtest-all.cc.1.o: undefined reference to symbol 'pthread_key_delete@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Waf: Leaving directory `/home/aagnone3/Downloads/essentia/build'
Build failed
-> task in 'basetest' failed (exit status 1):
{task 139835574329168: cxxprogram gtest-all.cc.1.o,test_audioloader.cpp.1.o,test_composite.cpp.1.o,test_connectors.cpp.1.o,test_copy.cpp.1.o,test_fileoutput.cpp.1.o,test_main.cpp.1.o,test_math.cpp.1.o,test_network.cpp.1.o,test_networkparser.cpp.1.o,test_parameter.cpp.1.o,test_peak.cpp.1.o,test_pool.cpp.1.o,test_scheduler.cpp.1.o,test_stringutil.cpp.1.o,test_treetraversal.cpp.1.o,test_vectorinput.cpp.1.o,test_vectoroutput.cpp.1.o -> basetest}
['/usr/bin/g++', 'test/3rdparty/gtest-1.6.0/src/gtest-all.cc.1.o', 'test/src/basetest/test_audioloader.cpp.1.o', 'test/src/basetest/test_composite.cpp.1.o', 'test/src/basetest/test_connectors.cpp.1.o', 'test/src/basetest/test_copy.cpp.1.o', 'test/src/basetest/test_fileoutput.cpp.1.o', 'test/src/basetest/test_main.cpp.1.o', 'test/src/basetest/test_math.cpp.1.o', 'test/src/basetest/test_network.cpp.1.o', 'test/src/basetest/test_networkparser.cpp.1.o', 'test/src/basetest/test_parameter.cpp.1.o', 'test/src/basetest/test_peak.cpp.1.o', 'test/src/basetest/test_pool.cpp.1.o', 'test/src/basetest/test_scheduler.cpp.1.o', 'test/src/basetest/test_stringutil.cpp.1.o', 'test/src/basetest/test_treetraversal.cpp.1.o', 'test/src/basetest/test_vectorinput.cpp.1.o', 'test/src/basetest/test_vectoroutput.cpp.1.o', '-o', '/home/aagnone3/Downloads/essentia/build/basetest', '-Wl,-Bstatic', '-Lsrc', '-lessentia', '-Wl,-Bdynamic', '-L/usr/local/lib', '-lfftw3f', '-lavformat-ffmpeg', '-lavcodec-ffmpeg', '-lavutil-ffmpeg', '-lavresample-ffmpeg', '-lsamplerate', '-ltag', '-lyaml']
Same result for both master and 2.0.1 branches
The problem is in wscript#L268.
This happens because on some Linux distros (e.g. Arch Linux) Python's platform.dist()
returns tuple with empty strings (('', '', '')
), and -lpthread
GCC flag will be missing.
The issue can be fixed by adding ''
to the distros list: replace line 268 with if platform.dist()[0] in ['Ubuntu', 'LinuxMint', '']:
.
Indeed! Specifically for my case, platform.dist()[0] was 'debian', but a successful fix nevertheless.
Most helpful comment
The problem is in wscript#L268.
This happens because on some Linux distros (e.g. Arch Linux) Python's
platform.dist()
returns tuple with empty strings (('', '', '')
), and-lpthread
GCC flag will be missing.The issue can be fixed by adding
''
to the distros list: replace line 268 withif platform.dist()[0] in ['Ubuntu', 'LinuxMint', '']:
.