Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: kojis - 17.01.14 - klo:17.50

Otsikko: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 17.01.14 - klo:17.50
Pitäisi kääntää VDR-Manager plugini (http://projects.vdr-developer.org/projects/vdr-manager/wiki), VDR on asennettu ja toimii hyvin mutta VDR-Manager pluginin kääntäminen ei onnistu. Kyseessä on debian 7 serveri ja VDR on asennettu suoraan apt-get:llä.

Lataan täältä (http://projects.vdr-developer.org/projects/vdr-manager/files) kyseisen pluginin ja puran paketin, sen jälkeen yritän kääntää make komennolla ja saan seuraavan virheen:
Koodia: [Valitse]
make
g++  -c   vdrmanager.cpp
g++  -c   sock.cpp
g++  -c   vdrmanagerthread.cpp
g++  -c   select.cpp
g++  -c   handler.cpp
g++  -c   helpers.cpp
g++  -c   compressor.cpp
g++   -shared vdrmanager.o sock.o vdrmanagerthread.o select.o handler.o helpers.o compressor.o -o libvdr-vdrmanager.so -lz
/usr/bin/ld: vdrmanager.o: relocation R_X86_64_32S against `_ZTV11cVdrManager' can not be used when making a shared object; recompile with -fPIC
vdrmanager.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [libvdr-vdrmanager.so] Error 1
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: mrl586 - 17.01.14 - klo:18.03
Tuossa ehdotetaan käännösvalitsinta. Kokeile, auttaisiko se.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 17.01.14 - klo:18.31
Lukasin tuota README:tä ja siellä sanotaan:
Koodia: [Valitse]
If you use a vdr version lower then 1.7.36, use Makefile.pre.1.7.36
Oma VDR versio on 1.7.28, eli nimesin Makefile.pre.1.7.36 -> Makefile ja käänsin uudestaan ja se tulosti seuraavan:
Koodia: [Valitse]
g++ -g -O2 -Wall -Woverloaded-virtual -fPIC -g -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I../../../include -I../../../../DVB/include vdrmanager.cpp

Kääntäminen tekee uuden "vdrmanager.o" tiedoston. Nimesin "vdrmanager.o" -> "libvdr-vdrmanager.so.1.7.28" ja siirsin kansioon "/usr/lib/vdr/plugins". Kun käynnistän VDR:än uudestaan se valittaa kuitenkin näin:
Koodia: [Valitse]
Restarting Linux Video Disk Recorder: vdr
Searching for plugins (VDR 1.7.28/1.7.28) (cache hit): epgsearch live conflictcheckonly quickepgsearch epgsearchonly streamdev-server
WARNING: The following plugins have been left out due to really binary incompatibility: vdrmanager.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: nm - 17.01.14 - klo:18.36
Kääntäminen tekee uuden "vdrmanager.o" tiedoston. Nimesin "vdrmanager.o" -> "libvdr-vdrmanager.so.1.7.28" ja siirsin kansioon "/usr/lib/vdr/plugins".

Juu, ei kyllä toimi noin. Kaikki .o:t pitää linkata dynaamiseksi kirjastoksi, kuten se aiemmin epäonnistunut käännös yritti tehdä.

Komenna make clean, jotta vanhat objektitiedostot poistetaan, ja aja sitten make. Mitä se nyt sanoo?
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 17.01.14 - klo:18.52
Juu samaa mietin itsekkin, että .so tiedosto sieltä kait pitäs tulla.

Nyt ajoin "make all VDRDIR=/usr/include/vdr LIBDIR=/usr/lib/vdr/plugins":
Koodia: [Valitse]
make all VDRDIR=/usr/include/vdr LIBDIR=/usr/lib/vdr/plugins
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include vdrmanager.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include sock.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include vdrmanagerthread.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include select.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include handler.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"vdrmanager"' -I/usr/include/dvb-s2api-liplianin -I/usr/include/vdr/include -I../../../../DVB/include helpers.cpp
g++ -g -g -Wall -Woverloaded-virtual -Wno-parentheses -O2 -fPIC -shared vdrmanager.o sock.o vdrmanagerthread.o select.o handler.o helpers.o -o libvdr-vdrmanager.so

Ja nyt tulee automaattisesti "libvdr-vdrmanager.so" mutta käynnistäessä uudelleen valittaa vieläkin:
Koodia: [Valitse]
WARNING: The following plugins have been left out due to really binary incompatibility: vdrmanager.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: nm - 17.01.14 - klo:18.55
Ja nyt tulee automaattisesti "libvdr-vdrmanager.so" mutta käynnistäessä uudelleen valittaa vieläkin:
Koodia: [Valitse]
WARNING: The following plugins have been left out due to really binary incompatibility: vdrmanager.

No poistitko sen aiemmin asentamasi libvdr-vdrmanager.so.1.7.28-tiedoston?
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 17.01.14 - klo:19.12
Kyllä poistin.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: Postimies - 18.01.14 - klo:17.24
VDR on hieman hankala. Paras ratkaisu on hakea VDR:n lähdekoodi ja siihen tarvittavat plugit ja kääntää kaikki. Plugit tarvitsevat ainakin osan VDR:n lähdekoodista. Plugarit kannattaa kuitenkin käätää uusiksi kun päivittää VDR:n. vdr-vdrmanager löytyy ainakin Gentoon paketinhallinnasta. E-topilla paljon vdr asiaa katso jos sieltä löytyisi valmiina.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 18.01.14 - klo:19.09
Eikös nuo tarvittavat VDR lähdekoodit tule vdr-dev paketin mukana?

Ei millään jaksaisi alkaa kääntämään kaikkea kun ei ole mitään takeita saanko niitä toimimaan ollenkaan.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: Postimies - 18.01.14 - klo:20.47
En ole käyttänyt Debinia. Ubuntuakin aika vähän vdr käytössä. VDR on onneksi nykyään paketinhallinnassa. Aikoinaan se piti aina kääntää itse. Debianin VDR lienee melko vanha. Itsellä nyt 2.0.2-r1 ja sekin on melko vanha versio. Etsi joku repo jossa tuoreet VDR paketit.

En ole ikinä käyttänyt vdrmanager plugaria ja en tiedä mihin tarvitaan...

VDR on melko pieni ohjelma ja sen kääntää nopeasti. XBMC sitten riippuvuuksineen voi kestää tuntejakin. Ja tilaakin voi kulua useampi giga. Aikoinaan tappelin vdr-xvdr ja xbmc-addon-xvdr plugien kanssa ja kääntäminen tuli tutuksi. Muistaakseni VDR:n header tiedostot tai lähdekoodi piti löytyä.

Mutta parhaan tuloksen saat kun käännät vdr:n ja plugarit samalla kääntäjällä & kirjastoilla.  Kyse on ns. binaariyhteensopivuudesta.
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: kojis - 18.01.14 - klo:21.08
Olisko jossain opasta missä neuvottaisi VDR + pluginien kääntäminen debianille (käytännössä ubuntu)?
Otsikko: Vs: VDR-Manager pluginin kääntäminen
Kirjoitti: Postimies - 18.01.14 - klo:22.30
Lataa vdr lähdekoodi ja pura. Plugarit Plugins kansioon. lue ohjeet ja käännä.