靜態庫:編譯時,鏈結所有需要的庫。
優點:對執行環境沒有要求。
缺點:檔案大。
製作步驟:以編寫main檔案為列
1、編寫main.c,print.c,show.c。
2、將show.c和print.c檔案轉為二進位制檔案。
gcc -c show.c print.c
3、製作靜態庫。
ar -crv lib***.a show.o print.o
注:lib***.a是格式。***是庫名,.a表示的是靜態庫。下面的.so表示的是動態庫
4、靜態編譯。
gcc main.c -o main -l . -l*** -static
注:-l . 中-l表示靜態庫的位置。 .表示靜態庫就在當前目錄下。-l表示靜態庫的名字。***表示靜態庫具體的名字。-static表示這是靜態編譯。
5、執行
./main 執行main檔案,檢視是否存在錯誤,是否能編譯成功。
動態編譯:編譯時,不鏈結庫檔案。
優點:檔案小。
缺點:對執行的環境有要求。
製作步驟:以main檔案為列
1、製作動態庫
gcc -fpic -shared -o libxx.so print.c show.c
注:pic是大寫
2、動態編譯
gcc main.c -o main -l . -lxx
3、將動態庫複製到預設系統下。
cp libxx.so /usr/lib
4、執行檔案
./main
2019/7/19
linux下gcc中,pack指令
gcc中,pack指令就是這樣的 pragma pack 1 預設的記憶體對齊方式以及記憶體對齊規則在不同的系統上是有區別的,所以gcc編譯器在這一點上在不同的系統上也是區別對待的。雖然到現在也沒有看到gcc在linux系統下的使用 pragma pack n 的記憶體對齊規則,但是從我測試的結果來...
Linux的指令以及用法(1)GCC
1 gcc gcc是linux最流行的編譯系統。可以編譯c,c 等多種高階語言。用法 1 gcc 檔名 o 生成檔名。gcc hello.c o hello 將hello.c的檔案編譯成hello檔案。2 gcc e 檔名 o 生成檔名。注 e中e為大寫 gcc e hello.c o hello....
C 語言的 GCC 擴充套件
gnu 編譯器 gcc 提供了很多 c 語言擴充套件,編譯器會使用該資訊生成更高效的機器 內聯函式 static inline attribute always inline int foo void 避免內聯 attribute noinline int foo void 純函式 attribut...