gcc
- 通過gcc控制編譯過程
- 讓gcc在編譯的任何階段結束
- 編譯器輸出信息、生成的二進制文件 、不同數量和種類的調試代碼、代碼優化功能
- gcc提供了30多條警告信息和3個警告級別,使用它們有助於增強程序的穩定性和可移植性
- gcc還對標準的C和C++語言進行了大量的擴展
gcc hello.c -o hello
- gcc來編譯源程序
- -o 選項
使用gcc編譯程序,的四個過程
- 預處理(pre-processing)
- 編譯(compiling)
- 彙編(assembling)
- 鏈接(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");
}
靜態庫介紹
- 靜態庫是obj文件的合集
- 目標文件.o 通常只解析了文件內部的變量和函數,對於引用的函數和變量沒有解析
- 將編寫好的目標文件引用進來去解析引用的函數和變量
- 通常引用的目標是庫
- 靜態庫以
.a
爲後綴。名字格式一般是libxxxx.a
由ar程序生成
創建靜態庫
- 生成目標文件 gcc -c file.c
- 目標文件進行歸檔 ar -rcs 庫文件obj_1 obj_2(將一個obj文件加入到已經存在靜態庫)
gcc -c print_hello.c
#生成 print_hello.o文件
ar -rcs libhello.a print_hello.o
# 生成libhello.a(靜態庫)