On Saturday 18 April 2009 12:03:16 Konrad Rosenbaum wrote:
Hi,
On Saturday 18 April 2009, Bernhard Schiffner wrote:
innerhalb eines "großen" Programms möchte ich zu Laufzeit nur einen kleinen Bestandteil ändern.
Ich will nun nicht das ganze Ding neu kompilieren und starten müssen (Maschinensteuerung!), sondern nur zu einem geeigneten Augenblick diese Änderung einbringen können.
Sind die Änderungen wirklich so begrenzt? Sprich: kannst Du es als Plugin bezeichnen?
Mit entsprechender Vorsicht: ja.
(Ich muß mir das, wenn ich weiß, daß es möglich ist, noch genau überlegen.) Da es sich um eine Maschinensteuerung handelt, sollte das kein Problem sein. "Normale" (d.h. bekannte) Variablen laufen da eh über eine shm-area. Wahrscheinlich muß man ein "last ressort"-shm definieren, in dem ein paar Standard-Typen (int, float, string[255] ...) zur Verfügung stehen, bis mal richtig komplett kompiliert wird.
Hat da irgendwer Erfahrung? Was entspricht bei Debian libdl.so? (Irgendwie in libc enthalten?)
Es gibt libdl.so in /lib (Paket: libc6) und in /usr/lib (Paket: libc6-dev). (Debian Lenny)
In Debian als dlopen() etc. "getrant" (eben nicht ldopen() )
Benutzt Du ANSI C oder C++? Bei ersterem musst Du sehr vorsichtig vorgehen, bei letzterem kann man das C++-Typsystem ausnutzen, um es sicher zu gestalten.
Weiß ich noch nicht. (C)
... (Danke für das Kochbuch.) ...
Konrad
Bernhard