動的ローディングのサンプルコード
三つのリンク方式 - Shammerismで動的ローディングのコードを書いていなかったので、それを実装。と言っても、http://www.amazon.co.jp/C言語による-スーパーLinuxプログラミング-Cライブラリの活用と実装・開発テクニック-飯尾-淳/dp/4797361204で紹介されているサンプルコードを試してみた、というだけ。
共有ライブラリ側のコード(functions.c)
#include <stdio.h> void function01(){ printf("Function01\n"); }
共有ライブラリをロードするmain関数(dynamic-load.c)
#include <dlfcn.h> int main(int argc, char** argv){ void* handle = dlopen("./myfunc.o", RTLD_LAZY); void (*func)(void) = dlsym(handle, "function01"); (*func) (); dlclose(handle); return 0; }
コンパイル
# gcc -o myfunc.so -fPIC -shared functions.c # gcc dynamic-load.c -o dynamic-load -ldl # ./dynamic-load Function01 #