Fórumok
Sziasztok.
Egy mezei programot szeretnék leforgatni, a neve rtl-ais.
Ezen instrukciókat követtem Ubuntu studion és Arch-on (ez utóbbi rpi zeron van):
https://github.com/dgiardini/rtl-ais/blob/master/README
Nem ment.
A forgatás.
Ezt kaptam:
root@fekete:/usr/src/rtl-ais/rtl-ais# make
cc main.o rtl_ais.o convenience.o ./aisdecoder/aisdecoder.o ./aisdecoder/sounddecoder.o ./aisdecoder/lib/receiver.o ./aisdecoder/lib/protodec.o ./aisdecoder/lib/hmalloc.o ./aisdecoder/lib/filter.o ./tcp_listener/tcp_listener.o -o rtl_ais -lpthread -lm -L/usr/local/lib -lrtlsdr -lusb-1.0
./aisdecoder/lib/filter.o: In function `__mac_g':
/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:37: multiple definition of `__mac_g'
./aisdecoder/lib/receiver.o:/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:37: first defined here
./aisdecoder/lib/filter.o: In function `__mac_c':
/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:48: multiple definition of `__mac_c'
./aisdecoder/lib/receiver.o:/usr/src/rtl-ais/rtl-ais/aisdecoder/lib/filter-i386.h:48: first defined here
collect2: error: ld returned 1 exit status
Makefile:56: recipe for target 'rtl_ais' failed
make: *** [rtl_ais] Error 1
Próbáltam rákeresni a tárgyban megadott hibaüzenetre, de sajnos ennyire nem értek a céhez, csak 1 évig tanultam vala kb. 12 éve.
Szeretném először az ubuntumon leforgatni, majd arch-on is, az Arch-on egyes *dev csomagokat meg sem tudok szerezni hozzá, mert a repóim hiányosak vagy meghibbantak. Szóval tanácstalan vagyok.
Hozzászólások
Szia.
Ezeket telepítsd fel előtte.
- librtlsdr
- libusb
- libpthread
Mind fönt van, a dev csomahok is. Ez volt az első, amit néztem.
Emiatt nem értem.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Milyen rendszeren próbálod lefordítani? 64bit?
32
Az üzenet alapján úgy tűnik, valahol duplán van include-olva a filter-i386.h header file.
Védd le a dupla include ellen a header file-t! Kezdődjön ezen sorokkal:
#ifndef __FILTER_I386_H
#define __FILTER_I386_H
illetve a végére tégy egy
#endif
sort. Aztán lássuk! ;-)
Mivel nem tudom, miről beszélsz, a rtl_ais.h fájl elejére beírtam amit írtál. Semmi változás. Próbáltam hasonló nevű .h fájlra keseni ami duplikálva van, semmire sem jutottam, mert nem értem.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Az arch-on sikerült megtalálni, mi hiányzott a belének.
Ez:
pacman -S core/libusb
Debianon még a hóhérom sem tudja, mi a hiányosság.
Oda is felrámoltam ezeket:
root@fekete:/usr/src# apt-get install libusb-1.0-0 libusb-1.0-0-dev
Csomaglisták olvasása... Kész
Függőségi fa építése
Állapotinformációk olvasása... Kész
libusb-1.0-0 már a legújabb verzió.
libusb-1.0-0-dev már a legújabb verzió.
0 frissített, 0 újonnan telepített, 0 eltávolítandó és 0 nem frissített.
... mégsem fordul
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Úgy látom libusb-ből 2 verzió is van a repóban, 1.0 és 0.1.4 - nézd meg melyik kellhet.
Már néztem korábban...
# apt-get install libusb-0.1-4
Csomaglisták olvasása... Kész
Függőségi fa építése
Állapotinformációk olvasása... Kész
libusb-0.1-4 már a legújabb verzió.
0 frissített, 0 újonnan telepített, 0 eltávolítandó és 0 nem frissített.
Azt is próbáltam, mi van, ha csak külön-külön van fenn a kétféle verzió.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
És a dev csomagjaik? Próbáld ki mindkét dev-vel külön külön telepítve a fordítást.
Néztem azokat is, csak már elfáradtam tőle.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Milyen fordítóverzióval? Nekem fordult Debian8/amd64-en az alábbiakkal:
Ilyesmit lehetne kipróbálni:
Szerk: Sikerült? Nem sikerült? Nem érted? Nincs sed(1) a gépeden? Egyéb?
Sikerült!!!!!
Köszönöm.
Most az értelmét keresem, mi a külső és a statikus inline közti különbség, bár mivel már megoldódott a forgatás, már az új lépéssel foglalkozom.
Kösz mindenkinek a türelmet.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Örülök, hogy sikerült; de hogy mi értelme annak, hogy az inline-t még kombináljuk valami más tárolási osztállyal, arról fogalmam sincs... Egyébként is van pár warning a fordításban, de remélem azért működik.
Raspberry Zeron, Arch Linuxon természetesen nem fordul le:
CMake Error at CMakeLists.txt:54 (MESSAGE):
The development files for ALSA or PulseAudio are required - libasound-dev,
libpulse-dev
...és persze a pacman repói ezen dev csomagokat sem tartalmazzák.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Ez még mindig a rtl-ais? Mert abban nem véltem cmake-et látni...
Nem az, az aisdecoder.
De megtaláltam mi hiányzik, a pacman repóiban nincs -dev csomag, a binárisokban ott vannak a headerek. Ez kellett:
# ls -l ./*.tar.xz
-rw-rw-r-- 1 root root 377836 Jan 23 16:00 ./alsa-lib-1.1.0-1-armv6h.pkg.tar.xz
-rw-rw-r-- 1 root root 945816 Jan 23 16:00 ./alsa-utils-1.1.0-1-armv6h.pkg.tar.xz
és itt találtam rájuk, mert a pacmanom sok egyéb dekódert is fel akart nekem pakolni:
http://fraggod.net/static/mirror/packages/archlinuxarm/armv6h/
---
--- A gond akkor van, ha látszólag minden működik. ---
---
Ezzel Debianon is lefordult.
Nézz bele ebbe a fájlba: https://github.com/dgiardini/rtl-ais/blob/master/Makefile
A következő sorok gyanúsak:
RTLSDR_INCLUDE=/tmp/rtl-sdr/include
RTLSDR_LIB=/tmp/rtl-sdr/build/src
LIBUSB_INCLUDE=/tmp/libusb/include/libusb-1.0
LIBUSB_LIB=/tmp/libusb/lib
Szerintem javítsd ki ezeket...
--
nTOMasz
"The hardest thing in this world is to live in it!"
Reszletek mellozesevel most csak annyi, hogy vedd ki a filter.h fajlbol, azt a sort, ahol a filter-i386.h kerul include-ra, vagy kommenteld ki (elveszik egy kis optimalizacio, de le fog fordulni ujabb gcc-kel is).
make clean
make
es mar meg is van.