靜態鏈接庫、動態鏈接庫

gcc

  1. 通過gcc控制編譯過程
  2. 讓gcc在編譯的任何階段結束
  3. 編譯器輸出信息、生成的二進制文件 、不同數量和種類的調試代碼、代碼優化功能
  4. gcc提供了30多條警告信息和3個警告級別,使用它們有助於增強程序的穩定性和可移植性
  5. gcc還對標準的C和C++語言進行了大量的擴展

gcc hello.c -o hello

  1. gcc來編譯源程序
  2. -o 選項

使用gcc編譯程序,的四個過程

  1. 預處理(pre-processing)
  2. 編譯(compiling)
  3. 彙編(assembling)
  4. 鏈接(linking)

靜態鏈接庫

main.c

#include <stdio.h>
extern void print_hello();
int main(void)
{
    print_hello();
}

Print_hello.c

#include <stdio.h>
void print_hello()
{
    printf("hello\n");
}

靜態庫介紹

  1. 靜態庫是obj文件的合集
  2. 目標文件.o 通常只解析了文件內部的變量和函數,對於引用的函數和變量沒有解析
  3. 將編寫好的目標文件引用進來去解析引用的函數和變量
  4. 通常引用的目標是庫
  5. 靜態庫以 .a爲後綴。名字格式一般是 libxxxx.a由ar程序生成

創建靜態庫

  1. 生成目標文件 gcc -c file.c
  2. 目標文件進行歸檔 ar -rcs 庫文件obj_1 obj_2(將一個obj文件加入到已經存在靜態庫)
gcc -c print_hello.c
#生成 print_hello.o文件
ar -rcs libhello.a print_hello.o
# 生成libhello.a(靜態庫)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章