linuxとC スタティックリンクライブラリ
Linux + C
スタティックリンクライブラリ コンパイル時にコードが組み込まれる
ダイナミックリンク プログラムの実行時にロードされる
ダイナミックロード 自分でロードして自分で呼び出す
その1 スタティックリンクライブラリ
○staticlinklib.h
#ifndef _STATICLINKLIB_ #define _STATICLINKLIB_ int hello(char *name); #endif
○staticlinklib.c
#include <stdio.h> int hello(char *name) { printf("%s hello!!\n",name); return 0; }
○staticlinklib2.h
#ifndef _STATICLINKLIB2_ #define _STATICLINKLIB2_ int hello(char *name); #endif
○staticlinklib2.c
#include <stdio.h> int hello2(char *name) { printf("%s hello hello\n",name); }
○main.c
#include <stdio.h> #include "staticlinklib.h" #include "staticlinklib2.h" int main(int argc,char **argv) { hello("a"); hello2("b"); return 0; }
で、
gcc -c staticlinklib.c gcc -c staticlinklib2.c
gcc -cでオブジェクトファイルを出力
ar r staticlinklib.a staticlinklib.o staticlinklib2.o
ar で書庫をつくる(rオプションで同名ファイルは置換)
ranlib staticlinklib.a
ranlib で書庫のインデックスを作成
gcc -o main main.c staticlinklib.a
./main
本体のコンパイル。