how to build sndpeek from sndtools
From Noah.org
Jump to navigationJump to searchContents
Errors
When building sndtools from [1] you make get the following compile error:
../marsyas/LPC.cpp: In member function 'virtual void LPC::process(fvec&, fvec&)': ../marsyas/LPC.cpp:120:40: error: 'abs' was not declared in this scope rmat_(i-1,j-1) = corr_(abs((int)(i-j)));
or this link error:
g++ -o sndpeek chuck_fft.o RtAudio.o Thread.o sndpeek.o Stk.o Centroid.o DownSampler.o Flux.o LPC.o MFCC.o RMS.o Rolloff.o System.o fvec.o AutoCorrelation.o Communicator.o Hamming.o MagFFT.o NormRMS.o MarSignal.o fmatrix.o -L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile /usr/bin/ld: Thread.o: undefined reference to symbol 'pthread_cancel@@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 make[1]: *** [sndpeek] Error 1
My build environment
$ uname -a Linux noah-ubuntu 3.19.0-43-generic #49~14.04.1-Ubuntu SMP Thu Dec 31 15:44:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/issue.net Ubuntu 14.04.3 LTS
Ubuntu Packages required for building and running
Install the following Ubuntu packages:
aptitude install libxi-dev libxmu-headers libalsaplayer0 freeglut3-dev libxt-dev libsm-dev libice-dev libsndfile1-dev
I did not start from a stock Ubuntu installation. Others repeating these instructions may need to install additional packages (build-essential, at the very least).
Source patches required to build
Patch the makefile.alsa source file under src/sndpeek:
# diff -u makefile.alsa ../../../sndpeek-1.4.backup/src/sndpeek/makefile.alsa --- makefile.alsa 2015-03-01 14:31:15.000000000 -0800 +++ ../../../sndpeek-1.4.backup/src/sndpeek/makefile.alsa 2016-01-18 14:19:59.271647943 -0800 @@ -4,7 +4,7 @@ INCLUDES=-I../marsyas/ MARSYAS_DIR=../marsyas/ CFLAGS=-D__LINUX_ALSA__ -D__LITTLE_ENDIAN__ $(INCLUDES) -O3 -c -LIBS=-L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile +LIBS=-Wl,--start-group -L/usr/X11R6/lib -lglut -lGL -lGLU -lasound -lXmu -lX11 -lXext -lXi -lm -lsndfile -pthread -Wl,--end-group OBJS=chuck_fft.o RtAudio.o Thread.o sndpeek.o Stk.o \ Centroid.o DownSampler.o Flux.o LPC.o MFCC.o RMS.o Rolloff.o \
Patch the LPC.cpp source file under src/marsyas:
diff -u LPC.cpp ../../../sndpeek-1.4.backup/src/marsyas/LPC.cpp --- LPC.cpp 2015-03-01 14:31:15.000000000 -0800 +++ ../../../sndpeek-1.4.backup/src/marsyas/LPC.cpp 2016-01-18 13:48:37.115597483 -0800 @@ -27,6 +27,7 @@ #include "LPC.h" +#include <cstdlib> LPC::LPC( unsigned int inSize ) {
Now running make linux-alsa should work.