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 ladenVielen 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.1Vielleicht 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).