Hiervoor ben ik enkele dagen in de weer geweest.
Eerst uitzoeken hoe het make script in elkaar zit , dan opzoeken waar het script naar verwijst en dan proberen te interpreteren hoe alles aan elkaar hangt.
Ik moet zeggen dat ik alles eerst nog eens naar een raspberry 2 overgezet hebt , maar daar dook hetzelfde probleem op.
Kort analyse van het make-script ( Makefile). ik ga hier niet in detail wat al die argumenten doen maar enkel de hoofdbrok.
In weze is het script zo opgebouwd:
target:afhankelijkheden
<TAB> recept
<TAB> of inspringen is verplicht !
Hieronder een voorbeeld uit een extract van de Makefile:
dump1090 is hier het target en alle bestanden met .o zijn de afhankelijkheden
vanaf $(CC) komt het recept ( hier aanroepen van de compiler en de nodige bibliotheken ($(LIBS))
dump1090: dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o |
$(CC) -g -o dump1090 dump1090.o anet.o interactive.o mode_ac.o mode_s.o net_io.o $(LIBS) $(LDFLAGS) |
$(LIBS) is eigenlijk een variabele die hogerop is gedeclareerd ( hier niet te zien) maar hieronder toch opnieuw is weergegeven | |||||
Hierbij is de verwijzing naar de pkg-config van groot belang.
pkg-config is in feite een soort script dat de bibliotheken weet zitten .
Elk operatingssyteem heeft zijn eigen architectuur aan boord ( bv een x86-64 of in dit geval bij de rpi een ARM processor.)
Afhankelijk van deze arch. moet er anders gebuild worden .
Om uw software voor alle van deze architecturen te kunnen laten werken is er een " agent" nodig die u de weg wijst.
Deze verwijzing voor de bibliotheek van de rtl-sdr zit in een bestand dat librtlsdr.pc zit . Het is dit bestand dat nodig is om juist te kunnen compileren.
Alle verwijzingen voor de pkg-config hebben een extensie die eindigt op .pc
Eerst zoeken we waar librtlsdr.pc zich bevindt.Vanop de root zoeken we met
sudo find -name librtlsdr.pc
Het antwoord ziet U hieronder
Er zijn meerdere antwoorden ,maar /usr/local/lib/pkgconfig is het juiste.
Let ook op dat pkgconfig ook in het pad zit !
We gaan naar daar met :
cd /usr/local/lib/pkgconfig
en kijken wat er in librtlsdr.pc zit met
cat -n librtlsdr.pc
Deze ziet er nogal leeg uit vind ik , vergelijk hem eens met het bestand dat op mijn linux desktop staat. Let ook op het andere pad in de desktop !
Hier zijn wel de eerste regels ingevuld !
eerst koffie drinken ;)
Geen opmerkingen:
Een reactie posten