Ich habe meine eigene Implementierung von _init, malloc, free (und anderen) gemacht.
Innerhalb dieser Funktionen verwende ich die Bibliothek dlfcn.h (dlopen, dlsym usw.), um die aktuellen Standardversionen aufzurufen. Ich fasse sie in einer einzigen Datei zusammen und kompiliere sie als Shared Library (memory.so). Wenn ich eine ausführbare Datei starten möchte, die meine Versionen dieser Funktionen aufruft, setze ich einfach LD_PRELOAD=memory.so .
Das Problem ist, dass ich eine Reihe von anderen Modulen habe, von denen memory.c abhängt. Dazu gehören eine Datei mit Funktionen zum Scannen von elf Dateien ( symbols.c ) und meine eigene Implementierung einer Hashtabelle ( hashtable.c ), die ich unter anderem dazu verwende, Speicherlecks zu verfolgen.
Meine Frage ist, wenn es eine Möglichkeit, separat zu kompilieren hashtable.c & Symbole.c, so dass alle malloc Verweise mit der Standardbibliothek und nicht mit den auf memory.c enthalten aufgelöst werden. Ich könnte natürlich die dlfcn.h-Bibliotheken auf alles, was memory.c abhängt, aber ich würde es bevorzugen, wenn es eine Möglichkeit, das zu vermeiden war.
Ich habe immer noch nicht ganz herausgefunden, wie die Verknüpfung funktioniert, daher wäre ich für jede Hilfe dankbar.
Dankeschön