2012年2月5日 星期日

linux底下用C語言建立static library

使用ar工具打包
static lib靜態,檔名使用lib開頭且已.a結尾,當編譯使用-l旗標的時候反而把lib拿掉
比方說檔案名稱libpthread.a,編譯的時候gcc main.c -lpthread
display.c
#include <stdio.h>
void display(){
    print("Hello World!\n");
}

編譯指令
gcc -c display.c
ar -cvq libdisplay.a display.o

其中c表示create,v表示verbose,q是append意思,display.o後面還可以加入其他object檔案,打包成library

test.c
#include <stdio.h>
void display();
int main(){
    display();
}

編譯指令
gcc -o test test.c libdisplay.a
或者(假設libdisplay.a放在相同目錄)
gcc -o test test.c -L./ -ldisplay


可以使用nm指令來觀察library所提供的函數(他是列出symbol list)
nm libdisplay.a

沒有留言:

張貼留言