ausfuehrbare shared-library



  • hallo weist jemand wie man das Verhalte der libc implementiren kann?
    und zwar: die libc.so laesst sich mittels ld bzw dlopen/dlsym linken, gleichzeitig kann man libc.so ausfuehren(beim ausfuehren werden versions-infos angezeigt)

    ich mochte dasselbe verhalten bei meinen libs haben.
    Allergings:
    1. Falls ich die libs mit gcc ..... -shared bilde, kann ich sie mit dlopen laden, aber nicht ausfuehren
    2. wenn ich die Datei ausfuehren kann, kann ich es nicht mit dlopen laden 😞

    Vielen Dank im voraus.



  • Gib mal folgendes ein:

    cat /usr/lib/libc.so
    

    Bei mir scheint es sich bei der libc.so nicht um eine ELF-Datei, sondern um ein Linkerscript zu handeln.



  • ich meine /lib/libc.so.6

    mag sein dass auf anderen systemen nicht 6, sondern fruehre version vorhanden ist. Das verhalten ist aber gleich.

    die /lib/libc.so.6 ist eine ELF-Datei (kann man mit file anschauen)

    Gruss+Danke



  • Die libc scheint eine main Funktion zu besitzten... vielleicht musst du einfach eine ähnliche Funktion anlegen...

    readelf -s /lib/libc.so.6 schrieb:

    1957: 000c2700 56 FUNC GLOBAL DEFAULT 11 pthread_mutex_init@@GLIBC_2.0
    1958: 000154b0 219 FUNC GLOBAL DEFAULT 11 __libc_start_main@@GLIBC_2.0
    1959: 000289a0 13 FUNC WEAK DEFAULT 11 scalblnl@@GLIBC_2.1

    Vielleicht musst du dann noch dem linker sagen, dass er dieses Symbol als Startsymbol auswählen soll.

    man ld schrieb:

    --entry=entry
    Use entry as the explicit symbol for beginning execution of your
    program, rather than the default entry point. If there is no sym-
    bol named entry, the linker will try to parse entry as a number,
    and use that as the entry address (the number will be interpreted
    in base 10; you may use a leading 0x for base 16, or a leading 0
    for base 8).


Anmelden zum Antworten