--- a/LastFM.pro
+++ b/LastFM.pro
@@ -41,6 +41,8 @@
 
 linux* {
     SUBDIRS -= src/Helper \
+               src/libFingerprint/fplib/pro_qmake/fplib.pro \
+               src/libFingerprint/ \
                src/mediadevices/itunes
 
     SUBDIRS += src/output/alsa-playback
--- a/src/DiagnosticsDialog.cpp
+++ b/src/DiagnosticsDialog.cpp
@@ -26,7 +26,10 @@
 #include "LastFmSettings.h"
 #include "container.h"
 #include "lastfmapplication.h"
+
+#ifndef LINUX
 #include "libFingerprint/FingerprintCollector.h"
+#endif
 
 #include <QClipboard>
 
@@ -95,6 +98,7 @@
     connect( ui.copyToClipboardButton, SIGNAL( clicked() ), SLOT( onCopyToClipboard() ) );
 
     // Fingerprint collector
+#ifndef LINUX
     ui.fpQueueSizeLabel->setText( "0" );
     connect( The::app().m_fpCollector, SIGNAL( trackFingerprintingStarted( TrackInfo ) ),
              this,                     SLOT( onTrackFingerprintingStarted( TrackInfo ) ),
@@ -105,6 +109,10 @@
     connect( The::app().m_fpCollector, SIGNAL( cantFingerprintTrack( TrackInfo, QString ) ),
              this,                     SLOT( onCantFingerprintTrack( TrackInfo, QString ) ),
              Qt::QueuedConnection );
+#else
+    ui.tabWidget->removeTab( 1 );
+    ui.viewHelperLogButton->hide();
+#endif
 }
 
 
@@ -314,6 +322,7 @@
 }
 
 
+#ifndef LINUX
 void
 DiagnosticsDialog::onTrackFingerprintingStarted( TrackInfo track )
 {
@@ -338,3 +347,4 @@
     ui.fpCurrentTrackLabel->setText( "" );
     ui.fpQueueSizeLabel->setText( QString::number( The::app().m_fpCollector->queueSize() ) );
 }
+#endif
--- a/src/DiagnosticsDialog.h
+++ b/src/DiagnosticsDialog.h
@@ -62,9 +62,11 @@
     void onRefresh();
     void onCopyToClipboard();
 
+  #ifndef LINUX
     void onTrackFingerprintingStarted( TrackInfo );
     void onTrackFingerprinted( TrackInfo );
     void onCantFingerprintTrack( TrackInfo track, QString reason );
+  #endif
 };
 
 #endif //DIAGNOSTICSDIALOG_H
--- a/src/lastfmapplication.cpp
+++ b/src/lastfmapplication.cpp
@@ -25,8 +25,10 @@
 #include "configwizard.h"
 #include "container.h"
 #include "LastMessageBox.h"
+#ifndef LINUX
 #include "libFingerprint/FingerprintCollector.h"
 #include "libFingerprint/FingerprintQueryer.h"
+#endif
 #include "logger.h"
 #include "loginwidget.h"
 #include "MediaDeviceConfirmDialog.h"
@@ -168,10 +170,12 @@
     new ITunesScript( this, m_listener );
   #endif
 
+  #ifndef LINUX
     m_fpCollector = new FingerprintCollector( 1, this );
     m_fpQueryer = new FingerprintQueryer( this );
     connect( m_fpQueryer, SIGNAL( trackFingerprinted( TrackInfo, bool ) ),
                           SLOT( onFingerprintQueryDone( TrackInfo, bool ) ) );
+  #endif
 
     m_radio = new Radio( this );
     connect( m_radio, SIGNAL(stateChanged( RadioState )), SLOT(onRadioStateChanged( RadioState )) );
@@ -300,8 +304,10 @@
     sendPostedEvents( m_scrobbler, 0 /*all event types*/ );
     //TODO send events to individual scrobblers in the manager too?
 
+  #ifndef LINUX
     delete m_fpQueryer;
     delete m_fpCollector;
+  #endif
 
     #ifdef Q_WS_MAC
         if ( !m_pidFile.remove() )
@@ -445,6 +451,7 @@
     QString password = m_user->settings().password();
     QString version = The::settings().version();
 
+  #ifndef LINUX
     // as you can see we are initialising the fingerprinter, I like this comment
     m_fpCollector->setUsername( username );
     m_fpCollector->setPasswordMd5( password );
@@ -452,6 +459,7 @@
     m_fpQueryer->setUsername( username );
     m_fpQueryer->setPasswordMd5( password );
     m_fpQueryer->setPasswordMd5Lower( password ); // FIXME: surely they can't be the same!
+  #endif
 
     // init radio YTIO
     m_radio->init( username, password, version );
@@ -783,12 +791,14 @@
                     fetchMetaData();
                 }
 
+              #ifndef LINUX
                 if ( QFile::exists( m_currentTrack.path() ) &&
                      The::settings().currentUser().fingerprintingEnabled() )
                 {
                     m_activeNorman = 0;
                     m_fpQueryer->fingerprint( m_currentTrack );
                 }
+              #endif
             }
         }
         break;
@@ -1076,6 +1086,7 @@
 }
 
 
+#ifndef LINUX
 void
 LastFmApplication::onFingerprintQueryDone( TrackInfo track, bool fullFpRequested )
 {
@@ -1110,6 +1121,7 @@
         }
     }
 }
+#endif
 
 
 void
--- a/src/lastfmapplication.h
+++ b/src/lastfmapplication.h
@@ -184,7 +184,9 @@
     void onAppEvent( int event, const QVariant& );
     void onRequestReturned( class Request* request );
     void onScrobblerStatusUpdate( int, const QVariant& );
+#ifndef LINUX
     void onFingerprintQueryDone( TrackInfo, bool fullFpRequested );
+#endif
     void onNormanRequestDone( Request* r );
     void onPlaybackEndedTimerTimeout();
 
@@ -212,8 +214,10 @@
     class QTcpServer* m_control;
     class ScrobblerManager* m_scrobbler;
     class Radio* m_radio;
+#ifndef LINUX
     class FingerprintCollector* m_fpCollector;
     class FingerprintQueryer* m_fpQueryer;
+#endif
     class FrikkinNormanRequest* m_activeNorman;
 
     QPointer<class ArtistMetaDataRequest> m_activeArtistReq;
--- a/src/Radio.cpp
+++ b/src/Radio.cpp
@@ -129,7 +129,9 @@
         m_session = handshake->session();
         m_basePath = handshake->basePath();
         
+      #ifndef LINUX
         The::settings().setFingerprintUploadUrl( handshake->fingerprintUploadUrl() );
+      #endif
         
         setState( State_Handshaken );
 
--- a/src/settingsdialog.cpp
+++ b/src/settingsdialog.cpp
@@ -205,7 +205,11 @@
     connect( ui_scrobbling.dirTree, SIGNAL( dataChanged() ), this, SLOT( configChanged() ) );
     connect( ui_scrobbling.scrobblePointSlider, SIGNAL( valueChanged( int ) ), this, SLOT( configChanged() ) );
     connect( ui_scrobbling.launchWithMediaPlayerCheck, SIGNAL( toggled( bool ) ), this, SLOT( configChanged() ) );
+#ifndef LINUX
     connect( ui_scrobbling.fingerprintCheckBox, SIGNAL( stateChanged( int ) ), this, SLOT( configChanged() ) );
+#else
+    ui_scrobbling.fingerprintCheckBox->hide();
+#endif
     connect( ui_connection.proxyBox, SIGNAL( toggled( bool ) ), this, SLOT( configChanged() ) );
     connect( ui_connection.proxyHostEdit, SIGNAL( textChanged( QString ) ), this, SLOT( configChanged() ) );
     connect( ui_connection.proxyPortEdit, SIGNAL( textChanged( QString ) ), this, SLOT( configChanged() ) );
@@ -333,9 +337,11 @@
 
     ui_scrobbling.launchWithMediaPlayerCheck->setChecked( user.launchWithMediaPlayer() );
 
+#ifndef LINUX
     ui_scrobbling.fingerprintCheckBox->setCheckState( user.fingerprintingEnabled() ?
                                                         Qt::Checked : 
                                                         Qt::Unchecked );
+#endif
 
     ui_scrobbling.dirTree->setExclusions( user.excludedDirs() );
 }
@@ -510,7 +516,9 @@
     user.setScrobblePoint( ui_scrobbling.scrobblePointSlider->value() );
     user.setExcludedDirs( ui_scrobbling.dirTree->getExclusions() );
     user.setLaunchWithMediaPlayer( ui_scrobbling.launchWithMediaPlayerCheck->isChecked() );
+#ifndef LINUX
     user.setFingerprintingEnabled( ui_scrobbling.fingerprintCheckBox->checkState() == Qt::Checked ? true : false );
+#endif
     pageSaved( 2 );
 }
 
--- a/src/src.pro
+++ b/src/src.pro
@@ -206,6 +206,8 @@
 
     SOURCES += simplewizard_mac.cpp \
                winstyleoverrides.cpp
+
+    LIBS -= -lLastFmFingerprint$$EXT
 }
 
 
