用多了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” { }