Ich möchte Funktionen in einem Modul ausführen, dieses Modul wird Abhängigkeiten in anderen Modulen aufgelöst haben. die Module könnten sich ändern (dynamische Kompilierungsumgebung), so würde ich nicht alle Abhängigkeiten in einem einzigen monolithischen Modul verknüpfen wollen, das heißt, wenn es vermieden werden kannDynamische Verknüpfung mit LLVM
Ich hoffe, Linker::linkModules
zu verwenden, aber dies ist immer destruktiv auf die Quelle Modul. Das ist in Ordnung für ein Modul, abhängig von einem einzigen, denn wenn sich das geändert hat, ist das keine große Sache, aber ist es nicht übertrieben, N-1 Module, die sich nicht geändert haben, nur wegen einer einzigen Änderung neu zu erstellen?
Ich frage mich, ob es eine nicht-destruktive Version von LinkModule gibt, die für die JIT-Ausführung funktionieren kann.
wie in normalen gemeinsam genutzten Bibliotheken, wenn 'B'changes,' A' müsste noch mit dem neuen B neu verknüpft werden. Mein Punkt ist: wenn A ist verknüpft mit 'B0',' B1' ... 'BN 'und einer von ihnen ändert sich, ich sollte nur die Verweise auf diesen wieder verknüpfen müssen, da der Rest sich nicht änderte. Das aktuelle linkModules funktioniert als statischer Linker (alles in das Zielmodul kopieren) – lurscher
Der Linux-Kernel mit seinen Modulen erlaubt so etwas (entlädt ein Modul, lädt eine neue Version neu). Aber dort ist der Prozess unter der Kontrolle des Kernels, und es gibt Verriegelungen, um sicherzustellen, dass der Code nicht verwendet wird. – vonbrand