Skip to content
Alex edited this page Apr 22, 2019 · 3 revisions

Installationsanleitung um die hackrf-Tools mit Visual-Studio zu kompilieren.

Die Anleitung in der Wiki auf der Originalplattform sind etwas dürftig/veraltet
und es Fehlen hier essentielle Informationen.

Diese Anleitung soll als Anhaltspunkt für deinjenigen sein, damit sie nicht wie ich
erst stundenlang rumprobieren müssen, um das ganze zum Laufen zu bekommen.

Vorraussetzungen: Hierfür müssen noch zusätzlich die C++ Module installiert werden da wir diese später brauchen.

Wir benötigen hierfür folgende zusätzliche Komponenten:

CMAKE
http://www.cmake.org/cmake/resources/software.html
Hier die MSI Version installieren da sonst die Pfade nicht sauber gefunden werden beim Aufruf.
Wer sich damit auskennt kann auch die Zip-version nehmen.

FFTW
fftw-3.3.5 oder größer von http://www.fftw.org/install/windows.html
Hier die 64 bit dll Variante nehmen.

LIBUSB
https://github.com/libusb/libusb
Stand jetzt ist libusb-1.0.22 die aktuellste Version

PTTHREADS
ftp://sourceware.org/pub/pthreads-win32
Die letzte aktuell ist hier ptThreads 2.9.1

HOST aus Git Repo von HackRf
https://github.com/mossmann/hackrf
Hier ist für uns nur das Verzeichnis host interessant.

Die Repos FFTW, LIBUSB, HOST und PTHREADS werden in einzelne Vereichnis kopiert.
In meinem Beispiel habe ich auf C:\ ein Verzeichnis hackrf erzeugt,
worin ich dann alle o.a. Repos hineinkopiert habe.

FFTW und LIBUSB müssen noch extra kompiliert werden,
da im Abschluss die fertigen DLL erwartet werden.

Im Verzeichnis von FFTW eine Batchdatei generieren mit folgendem Inhhalt:
set MSBUILD="c:\Program Files\Microsoft Visual Studio 14.0\VC\bin\lib.exe"
%MSBUILD% /machine:x64 /def:src/libfftw3f-3.def

GGf. sind die Pfade zu Visual-Studio je nach Version und OS-Plattform (64/32bit) anzupassen.
Nach Ausführung erhalten wir die Datei libfftw3f-3.dll

Im Verzeichnis libusb-1.0.22 brauchen wir nur das Unterverzeichnis libusb.
Der Rest kann gelöscht werden.
Hier erstellen wir auch eine Batchdatei mit folgendem Inhalt:
set CONFIG=Release
set YEAR=2015
set MSBUILD="C:\Program Files\MSBuild\14.0\Bin\MSBuild.exe"

%MSBUILD% msvc\libusb_dll_%YEAR%.vcxproj /p:Platform=x64 /p:Configuration=%CONFIG% /target:Rebuild

GGf. sind die Pfade zu Visual-Studio je nach Version und OS-Plattform (64/32bit) anzupassen.
Nach Ausführung erhalten wir ein Verzeichnis X64/Release/dll, wo uns nur die Datei libusb-1.0.dll interessiert.

Nun kommen wir zum Abschluss:
Im Verzeichnis HOST erstellen wir ein Verzeichnis Build.
In diesem erstellen wir wieder eine Batchdatei mit folgendem Inhalt:


@echo OFF
rmdir /S /Q bin
rmdir /S /Q x64

cmake.exe ../ -B bin -G "Visual Studio 14 2015 Win64" -DLIBUSB_INCLUDE_DIR="c:\hackrf\libusb1.0.22\libusb" -DLIBUSB_LIBRARIES="c:\hackrf\libusb1.0.22\libusb\MS64\dll\libusb-1.0.lib" -DTHREADS_PTHREADS_INCLUDE_DIR="c:\hackrf\pthreads-w32-2-9-1-release\Pre-built.2\include" -DTHREADS_PTHREADS_WIN32_LIBRARY="c:\hackrf\pthreads-w32-2-9-1-release\Pre-built.2\lib\x64\pthreadVC2.lib" -DFFTW_INCLUDES="c:\hackrf\fftw-3.3.5-dll64" -DRELEASE="x64 Meine Version" -DFFTW_LIBRARIES="c:\hackrf\fftw-3.3.5-dll64\libfftw3f-3.lib"

cd bin
set MSBUILD="C:\Program Files\MSBuild\14.0\Bin\MSBuild.exe"
%MSBUILD% HackRf.sln /p:Platform=x64 /p:Configuration=Release /target:Rebuild

cd ..
mkdir x64

copy bin\hackrf-tools\src\Release*.exe x64
copy bin\libhackrf\src\Release*.dll x64
copy c:\hackrf\libusb1.0.22\libusb\MS64\dll*.dll x64
copy c:\hackrf\pthreads-w32-2-9-1-release\Pre-built.2\dll\x64\pthreadVC2.dll x64
pause


Die Pfade müssen, je nachdem wo ihr eure Sachen letztendlich hin kopiert habt, angepasst werden.
Achtet beim Kopy/Paste auch darauf das sich keine Tabs einschleichen.
Ich habe mind. 1 Stunde gebraucht um herauszufinden, warum der Kompiler die Deklaration -D nicht wollte.

Die Variable DRELEASE hat eine Besonderheit. Hier wird die Releaseversion deklariert.
Sie ist optional und per default hat man hier **unknown ** stehen.
In dem Fall kann man aber selber seine Version deklarieren um zu wissen welche Release man kompiliert hat.

Definiert ist das Ganze in set_release.cmake. Hier wird per git die letzte Commit-Transaktion ausgelesen und
als Version übernommen. Unter Windows haut das so nicht hin außer man ruft den Makeprozess aus der Git-Konsole auf.
Das habe ich aber aktuell noch nie getestet ob das wirklich funktioniert.

Endergebnis: Wir erhalten nach Ausführung der Batch im Build-Verzeichnis einen Ordner X64,
worin dann die fertig kompilierten Hackrf-Tools enthalten sind inkl. den benötigten DLL. Es handelt sich dann hierbei um 64-Bit Programme die auch nur auf einer 64bit Plattform laufen.

Man kann das Ganze auch für eine 32bit Plattform kompilieren.
Allerdings gibt es da eine paar Kompiler-Warnungen (bei mir waren es 2),
da hier vereinzelt Variablen mit 64bit-Deklarationen uint64_t in den Sourcen sind
die durch den Kompiler in size_t konvertiert werden.
Hier kann es dann aber zu Datenverlusten kommen.

Das nur zur Anmerkung.
Aktuell habe ich so noch keine Tests mit der 32bit Version gemacht und kann daher noch keine Aussage
über etwaige Auswirkungen machen. Gemeldet wurden sie nur in der hackrf_transfer.c bei 598 und 651.

Zeile 598 ist die Übergabe des S parameters mit dem Wert der Samplerate in Herz Zeile 651 ist die Übergabe des n Parameters für die Angabe der Samples.

Ich hoffe es hilft euch ein wenig

In diesem Sinne Viel Spaß

Clone this wiki locally