Linux和Aix編譯生成及使用靜態庫,動態庫

現有源文件:

//Hello.h
#include <stdio.h>
void printhello();


//Hello.c
#include <stdio.h>
void printhello()
{
  puts("Hello World1111!");
}

//Test.c
#include "Hello.h"
int main()
{
  printhello();
  return 0;
}

Linux下使用gcc生成靜態庫並使用

//生成.o文件
gcc -o Hello.o -c Hello.c
//打包
ar -rc libHello.a Hello.o
//依賴編譯生成可執行文件
gcc -o main test.c -L. -lHello

./main
Hello World1111!

Linux下使用gcc生成動態庫並使用

//生成動態庫
gcc -o libHello.so -fPIC -shared Hello.c
//編譯依賴
gcc -o main test.c -L. -lHello
//將生成的動態庫移至lib目錄
mv libHello.so /usr/lib
//刷新緩存
ldconfig
//執行該文件
./main
Hello World1111!


AIX下使用cc生成靜態庫並使用

cc -o Hello.o -c Hello.c

ar crs libHello.a Hello.o

cc -o main -L. -lHello test.c

AIX使用cc生成動態庫並使用

cc -qmkshrobj -o libHello.so hello.c
cc -o main -L. -lHello -brtl test.c

AIX指定位數編譯

cc -q64/ar -X64

 

查詢文件符號

ar -t libHello.a

ar -t -X64 libHello.a

nm -D libHello.so

發佈了13 篇原創文章 · 獲贊 5 · 訪問量 1547
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章