Dynamic Plugin Loader Example
Overview
This Go program serves as a dynamic plugin loader, loading a shared object file (plug.so) at runtime. The program assumes that the plugin defines specific symbols (V and F) and demonstrates how to interact with them.
Features
- Dynamic Loading: The program dynamically loads a shared object file (
plug.so) using the Go plugin package.
- Symbol Lookup: It looks up symbols (
V and F) in the loaded plugin.
- Command-Line Interaction: The program takes a command-line argument and sets the value of a variable (
V) in the plugin.
- Function Invocation: It calls a function (
F) from the plugin with the hostname as an argument.
Prerequisites
Ensure that you have Go installed on your machine. You can download it from the official website.
Usage
-
Build the Program:
make build
-
Build the Plugin (plug.so):
The plugin should export the symbols V (pointer to a string) and F (function taking a string argument). Make sure the plugin is built before running the main program.
go build -buildmode=plugin -o build/plug.so plugin/*
-
Run the Program:
./app <your_argument>
Replace <your_argument> with the desired command-line argument.
Configuration
No specific configuration is required for this program. Ensure that the shared object file (plug.so) is present in the same directory as the executable.
Contributing
If you'd like to contribute to the project, feel free to fork the repository, make your changes, and submit a pull request.
License
This project is licensed under the MIT License - see the LICENSE file for details.