如何使用gcc_clang進行C語言的編譯_編譯的流程是什么?


編譯命令

gcc/clang -g -O2 -o -c test test.c -I... -L... -l
-g : 輸出文件中的調試信息
-O : 對輸出文件做出指令優化,默認是O1, O2優化更多
-c : 可以編譯成
-o : 輸出文件
-I : 指定頭文件
-L : 指定庫文件位置
-l : 具體使用哪些庫

編譯流程

  1. 預編譯
  2. 編譯
  3. 鏈接, 動態鏈接/靜態鏈接

編寫文件 add.c

#include <stdio.h>

int add(int a, int b)
{
    return (a+b);
}

clang -g -c add.c // 生成一個指定的add.o的文件

libtool -static -o libmylib.a add.o // 生成一個libmylib.a的文件,必須要lib開頭

編寫文件 add.h

int add(int a, int b);

編寫最終程序

#include <stdio.h>
#include "add.h"

int main(int argc, char *argv[])
{
  int c = add(1, 2);
  printf("c: %d", c)
  return 0;
}

clang -g -o testlib testlib.c -I . -L . -lmylib

最終生成 testlib 的文件, libmylib.a 的庫必須要去掉 lib開頭和結尾的.a


clang -g -o testlib testlib.c -I . -L . -lmylib // -I . 頭文件在當前目錄的意思, -L . -lmylib是指定文件的意思


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM