gcc/g++編譯的那點事

用多了IDE,有時候總是會忘記編譯的命令,特此記錄下來

gcc

gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lword

-I 是頭文件目錄

-L 是.c/.cpp/.so等目錄

-l 是庫名,上面的lword對應libword.so,表示在lib目錄下尋找libword.so文件(如果gcc編譯選項加入了-static,表示尋找libword.a靜態庫文件,程序鏈接的庫名是word)

此外

-Wl,-rpath=.

 -Wl 表示增加選項,-rpath 表示執行程序在.(當前目錄)下尋找鏈接庫

編譯so

gcc -fPIC -shared ll.c -o libll.so

g++編譯

g++ test.cpp

C++和C混合編程

當混合編程需要g++使用c編譯的so,由於managling的存在,需要額外處理。

將頭文件中的聲明函數外加extern "C"

extern "C" void print();

如果函數很多的時候,使用 extern “C” { }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章