Linuxにおける動的ライブラリの使用方法
.so ライブラリのBuild方法
 gcc -fPIC -c libhello.c -o libhello.lo gcc -shared -Wl,-soname,libhello.so libhello.lo -o libhello.so
呼び出し側のコンパイル&リンク
 gcc -c -o call.o call.c
  gcc -o call -L. -lhello call.o
以下、ソースコード
----------------------------------
 <ライブラリ側> 
----------------------------------
■ hello.h
#ifndef __HELLO_H__
#define __HELLO_H__
typedef struct {
    unsigned int data1;
    unsigned int data2;
}STRUCT_TEST_TAB;
void say();
#endif
----------------------------------
■ hello.c
#include <stdio.h>
#include "hello.h"
STRUCT_TEST_TAB gData;
void say() {
 gData.data1 = 0;
 gData.data2 = 1;
    printf("Hello, World!\n");
    main_cb();  /* 呼び出し側の関数をコール */
}
----------------------------------
 <呼び出し側>
----------------------------------
■ call.c
#include <stdio.h>
/* 関数呼び出しだけなら .so 側のヘッダーは不要 */
#include "hello.h"  
STRUCT_TEST_TAB dData_Main;  /* so側で定義されている構造体参照 */
int main(int argc, char** argv) {
    
    say();  /* soファイル側の関数コール */
    return 0;
}
void main_cb() {
    printf("Main Callback! \n");
}
----------------------------------
※ libhello.so は /usr/lib に置く。 (他に置く場合はLIBPATHを通す)
※ ldconfig /usr/lib  でシステムに認識させること。 これをやらないとなる。
./call: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory
ライブラリが正しく動作すると
Hello, World!
Main Callback!