Jump to content


Photo

[DM500] symbol epoll_create in libc.so.6

DM500

  • Please log in to reply
1 reply to this topic

#1 MastaG

  • PLi® Core member
  • 1,514 posts

+115
Excellent

Posted 2 June 2012 - 11:56

Goedemiddag,

Ik weet dat de dm500 al lang niet meer ondersteund word maar ik ben ten einde raad en probeer het toch maar even te vragen.
Ik probeer de Tor binary to compileren voor de DM500 (www.torproject.org).

Tor heeft de volgende afhankelijkheden voor Linux:
- openssl: libcrypto en libssl (deze tweede is niet aanwezig op de dm500)
- libevent (niet aanwezig op de dm500)
- libz (zlib is wel aanwezig)
- librt.so.1 (niet aanwezig op de dm500 maar wel in mijn cdkroot/lib)

Als eerst heb ik een OpenPLI image voor mijn dm500 gecompileerd zodat ik de cross-compilers op mijn computer heb staan.
Deze staan bij mij in: /home/mastag/src/openpli/cdk/root/cdk/bin deze heb ik aan mijn PATH toegevoegd.
powerpc-tuxbox-linux-gnu-* (gcc ranlib ar etc..)

De prefix is:
/home/mastag/src/openpli/cdk/root/cdkroot/lib
Hier staan alle bibliotheken waar de compiler tegenaan linkt.


Als eerst heb ik libevent gecompileerd en geinstalleerd met:
./configure --host=powerpc-tuxbox-linux-gnu --prefix=/home/mastag/src/openpli/cdk/root/cdkroot/lib
make && make install

Daarna openssl 0.9.7m
./Configure --prefix=/home/mastag/src/openpli/cdk/root/cdkroot/lib shared no-dso no-zlib linux-ppc
make CC=powerpc-tuxbox-linux-gnu-gcc AR="powerpc-tuxbox-linux-gnu-ar r" RANLIB=powerpc-tuxbox-linux-gnu-ranlib
make CC=powerpc-tuxbox-linux-gnu-gcc AR="powerpc-tuxbox-linux-gnu-ar r" RANLIB=powerpc-tuxbox-linux-gnu-ranlib install
(met "shared" worden zowel de statische als gedeelde bibliotheken gecompileerd)

En als laatst Tor-0.2.2.35
Ik heb ervoor gekozen om libevent en openssl statisch te linken zodat ik deze bibliotheken niet naar mijn dreambox hoef te kopieren.

./configure --prefix=/var --sysconfdir=/var/etc --host=powerpc-tuxbox-linux-gnu \
--with-openssl-dir=/home/mastag/src/openpli/cdk/root/cdkroot/lib
--with-zlib-dir=/home/mastag/src/openpli/cdk/root/cdkroot/lib \
--with-libevent-dir=/home/mastag/src/openpli/cdk/root/cdkroot/lib \
--enable-static-libevent --enable-static-openssl \
--localstatedir=/var --disable-asciidoc \
CPPFLAGS="-I/home/mastag/src/openpli/cdk/root/cdkroot/include"
make

Tor word met succes gecompileerd en zowel openssl (libcrypto en libssl) als libevent zitten statisch in de binary gelinkt.
Vervolgens kopieer ik de binary src/or/Tor naar mijn dreambox in /tmp
Ook kopieer ik librt-2.3.2.so vanaf mijn cdkroot/lib naar /tmp
Als laatst maak ik op mijn dreambox een symbolische link aan /tmp/librt.so.1 -> /tmp/librt-2.3.2.so

Echter als ik nu Tor probeer uit te voeren krijg ik:
Jun 02 12:13:31.063 [notice] Tor v0.2.2.35. This is experimental software. Do not rely on it for strong anonymity. (Running on Linux ppc)
./tor: relocation error: ./tor: symbol epoll_create, version GLIBC_2.3.2 not defined in file libc.so.6 with link time reference

Dit komt denk ik doordat de C-bibliotheek cdkroot/lib/libc-2.3.2.so 94MB groot is en alle functies bevat.
De versie op de dreambox is gestript om alleen de functies te hebben die door de overige bibliotheke/binaries worden gebruikt?
Op de dm500 kan ik niet debuggen dat maakt het erg lastig.

Weet iemand hoe ik dit kan oplossen?

Edited by MastaG, 2 June 2012 - 12:00.


Re: [DM500] symbol epoll_create in libc.so.6 #2 MastaG

  • PLi® Core member
  • 1,514 posts

+115
Excellent

Posted 2 June 2012 - 14:01

Het is me gelukt :)

Door de volgende bestanden in een map te plaatsen:
libc-2.3.2.so (unstripped)
librt-2.3.2.so (unstripped)
libtor.a
tor


En vervolgens in die map het volgende commando uit te voeren:
powerpc-tuxbox-linux-gnu-strip --remove-section=.comment --remove-section=.note --strip-unneeded *

Nu word alles gestripped alleen houd gcc rekening met het feit dat "epoll_create" niet gestripped moet worden van libc-2.3.2.so omdat tor deze nodig heeft.

Vervolgens rename ik libc-2.3.2 naar libc.so.6 en librt-2.3.2 naar librt.so.1

Als ik ze alle drie naar mijn dm500 upload in de map /tmp dan start ie gewoon.

Het mooie zou natuurlijk zijn als ik de libc.so.6 in /lib kan vervangen door die van mij die iets groter is, maar dat zoek ik later wel uit.





Also tagged with one or more of these keywords: DM500

1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users