Ho riscontrato qualche difficoltà nel compilare il client per Last.fm su Linux e vorrei suggerire la soluzione che ho adottato per risolvere.
Dunque, io mi riferisco al sorgente contenuto in “last.fm-1.4.2.58240.src.tar.bz2” che ho decompresso, da utente root, in “/usr/src/”.
Dando il classimo “./configure && make” ho ottenuto l’errore:
make[1]: Entering directory `/usr/src/last.fm-1.4.2.58240/src/libFingerprint/fplib/pro_qmake' g++ -c -pipe -w -fPIC -DNBREAKPAD -DLINUX -DNDEBUG -I/usr/share/qt4/mkspecs/linux-g++ -I. -I../../../../src -I../../../../build -I../../../libMoose -I../../../libUnicorn -I../include -I../src -I../../libs/fftw/src/api -I../../../../res/libsamplerate -o ../../../../build/fplib/release/FingerprintExtractor.o ../src/FingerprintExtractor.cpp ../src/FingerprintExtractor.cpp: In member function ‘bool fingerprint::FingerprintExtractor::process(const short int*, size_t, bool)’: ../src/FingerprintExtractor.cpp:445: error: ‘memcpy’ was not declared in this scope make[1]: *** [../../../../build/fplib/release/FingerprintExtractor.o] Error 1 make[1]: Leaving directory `/usr/src/last.fm-1.4.2.58240/src/libFingerprint/fplib/pro_qmake' make: *** [sub-src-libFingerprint-fplib-pro_qmake-fplib-pro-make_default-ordered] Error 2
che ho risolto aggiungendo al file “src/libFingerprint/fplib/src/FingerprintExtractor.cpp” la stringa:
#include <string.h>
(chiaramente in testa al file, insieme agli altri include).
Successivamente ho avuto l’errore:
g++ -c -pipe -w -fPIC -DNBREAKPAD -DLINUX -DNDEBUG -I/usr/share/qt4/mkspecs/linux-g++ -I. -I../../../../src -I../../../../build -I../../../libMoose -I../../../libUnicorn -I../include -I../src -I../../libs/fftw/src/api -I../../../../res/libsamplerate -o ../../../../build/fplib/release/OptFFT.o ../src/OptFFT.cpp ../src/OptFFT.cpp: In constructor ‘fingerprint::OptFFT::OptFFT(size_t)’: ../src/OptFFT.cpp:262: error: ‘exit’ was not declared in this scope make[1]: *** [../../../../build/fplib/release/OptFFT.o] Error 1 make[1]: Leaving directory `/usr/src/last.fm-1.4.2.58240/src/libFingerprint/fplib/pro_qmake' make: *** [sub-src-libFingerprint-fplib-pro_qmake-fplib-pro-make_default-ordered] Error 2
che ho risolto aggiungendo al file “src/libFingerprint/fplib/src/OptFFT.cpp” la stringa:
#include <stdlib.h>
Infine ho dovuto modificare il file “src/libFingerprint/MP3_Source_Qt.cpp” aggiungendo due librerie con:
#include <stdlib.h> #include <limits.h>
a seguito degli errori:
g++ -c -pipe -w -D_REENTRANT -fPIC -DNBREAKPAD -DLINUX -DQT_NO_DEBUG -DQT_SQL_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I../../../../share/qt4/mkspecs/linux-g++ -I. -I../../../../include/qt4/QtCore -I../../../../include/qt4/QtNetwork -I../../../../include/qt4/QtGui -I../../../../include/qt4/QtXml -I../../../../include/qt4/QtSql -I../../../../include/qt4 -I../../src -I../../build -I../libMoose -I../libUnicorn -Ifplib/include -I../src/ -I../../res/mad -I../../build/LastFmFingerprint/release -o ../../build/LastFmFingerprint/release/MP3_Source_Qt.o MP3_Source_Qt.cpp MP3_Source_Qt.cpp: In function ‘short int f2s(mad_fixed_t)’: MP3_Source_Qt.cpp:70: error: ‘SHRT_MAX’ was not declared in this scope MP3_Source_Qt.cpp:72: error: ‘SHRT_MAX’ was not declared in this scope MP3_Source_Qt.cpp: In member function ‘virtual void MP3_Source::skipSilence(double)’: MP3_Source_Qt.cpp:379: error: ‘abs’ was not declared in this scope MP3_Source_Qt.cpp:385: error: ‘abs’ was not declared in this scope make[1]: *** [../../build/LastFmFingerprint/release/MP3_Source_Qt.o] Error 1 make[1]: Leaving directory `/usr/src/last.fm-1.4.2.58240/src/libFingerprint' make: *** [sub-src-libFingerprint-make_default-ordered] Error 2
Dopodiché si è compilato regolarmente e mi sembra funzionare bene.