2024-04-24 03:26:45 +00:00
|
|
|
The main goal of this investigation is to organize shared data and code across
|
|
|
|
multiple binary files. This is especially important for something like a base
|
|
|
|
layer that will be used in a program that supports hot-reloading or plugins.
|
|
|
|
|
|
|
|
Each isolated example in this repository explores a way to set up the base
|
|
|
|
layer, plugin, and main program.
|
|
|
|
|
|
|
|
The examples:
|
|
|
|
|
2024-04-24 13:15:00 +00:00
|
|
|
*_linking - Concrete examples for each operating system I have investigated
|
|
|
|
showing how to setup and use various types of dynamic linking. In
|
|
|
|
these the "base" layer goes through load-time linking, the
|
|
|
|
"plugin" layer goes through run-time linking, and the "main" layer
|
|
|
|
acts as the executable that must bind it all together.
|
|
|
|
|
|
|
|
clang_linking - Build scripts that build the *_linking examples with clang.
|
|
|
|
Clang does not require changes to the source in either case.
|
|
|
|
The build lines require some modification on Windows.
|
|
|
|
On Linux clang can be directly swapped out for gcc.
|
2024-04-24 03:26:45 +00:00
|
|
|
|
|
|
|
xlist - My prefered solution to the problem posed in the investigation which
|
|
|
|
relies only on run-time linking. It uses an xlist to manage the
|
|
|
|
maintenance burden of run-time linking, and a basic outline of the
|
|
|
|
abstracted form of each layer.
|
|
|
|
|
|
|
|
|