[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
As an appetiser for working with dynamic loadable modules, here is a minimal module written for the interface used by the loader in the previous section:
#include <stdio.h> int run (const char *argument) { printf ("Hello, %s!\n", argument); return 0; } |
Again, to compile on a GNU/Linux machine:
$ gcc -fPIC -c simple-module.c $ gcc -shared -o simple-module.so |
Having compiled both loader and module, a test run looks like this:
$ ./simple-loader simple-module World Hello, World! => 0 |
If you have a GNU/Linux system, you should experiment with the simple examples from this chapter to get a feel for the relationship between a dynamic module loader and its modules – tweak the interface a little; try writing another simple module. If you have a machine with a different dynamic loading API, try porting these examples to that machine to get a feel for the kinds of problems you would encounter if you wanted a module system that would work with both APIs.
The next chapter will do just that, and develop these examples into a fully portable module loading system with the aid of GNU Autotools. In A Module Loading Subsystem, I will add a more realistic module loader into the Sic project last discussed in A Large GNU Autotools Project.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Ben Elliston on July 10, 2015 using texi2html 1.82.