Minix is modular, but the fact that it uses statically linked binaries
may be a hinderance. Here is an idea on how to implement shared objects:

A simple method to include shared library support today would be like this:
When the dynamic executable is loaded, a section .sodep is read, which
contains a list of null-delimited list of libraries. ZMAGIC executables
or .a archives (regardless of archive style [Which is either the ones
made by GNU ar or ACK ar) can be specified. Include support for AAL objects.

The dynamic executable is linked with a different crt0.o, call it
dcrt0.o or so.

The server or process responsible for loading a program into memory will
also have ld-like capabilities. The main executable is loaded, with all
of the sodeps, and 'linked' using a linker-like linking. The resulting
executable would be static in RAM, but in thereoy, this would allow for
shared libraries. In fact, it may even be possible to create a tool to
undo the static-linking of ackpack-generated binaries. (if gcc made then
don't touch it, gcc is horridly broken, and so are it's generated
executable's format.) The unstatic tool would run like this: The binary
is checked if it is gcc or ackpack generated. If (gcc) { return(1); }.
if it is ackpack, check to see if symbols exist. if symbols exist, they
are checked against a database of symbols to see which library they came
from, if any at all. These symbols and the code sections the reperesent
are removed. Then the .sodep section is created, sodep data is written,
and then the file is saved. (ohh yeah it also backs up the old binary)

I don;'t know if that is detailed enough, and i do leave some things up
to the reader to assume (those thing are obvious if you know what you
are doing). Please don't flame me if the idea is
bad/stupid/unsupportable/mentions ZMAGIC/biases against gcc/etc. After
someone disects GNU binutils (namely the BFD library [ohh yeah, may want
to make a dynamic after this is all done and dandy]) to see
just how GNU does a.out. It also put in some data, appearently that
ackpack & it's toolchain doesn't know about. This may be part of the
reason tht gcc objects are incompatable with those compatable with
ackpack and vise versa. This does lead you to wonder just HOW does Minix
3 load gcc-compiled binaries without error, anyways?

Yes I actually did write that. Guess no one ever read it.