Makefile使用記錄

一   錯誤記錄

(1) g++  輸出  *.o: file not recognized: 不可識別的文件格式,而且對應的輸出文件超級大:

        原因可能是你使用g++編譯了 [*.hpp] 文件。


二  用法記錄

(1) notdir :

         用途: 去掉文件列表中每個文件的路徑

         用法舉例: $(notdir  $(wildcard .c   ./xpp/.cpp ) )

(2)wildcard

        用途:搜索指定位置符合條件的文件,返回結果列表

        用法舉例 :   $(wildcard  *.c   ./xpp/*.cpp ),表示搜索當前目錄中後綴名爲 .c 以及子目錄 xpp 中後綴名爲 .cpp 的所有    文件。

(3) g++ 參數說明

         以一條語句說明解釋之:g++ -std=c++11 -o Main $(OBJ)  -lgsl -lgslcblas -L libs/ -static  -I  $(includes)

       -std=c++11:編譯特性;

       -o:告訴g++後面是要輸出的文件 (-c 則表示只進行編譯輸出 目標文件,不進行鏈接)

        $(OBJ) g++的輸入文件,應該是一系列的目標文件;

       -lgsl :表明要使用庫 gsl.a 或 gsl.so ;

       -L  libs/  : 指定g++搜索庫的目錄,實際上就是gsl、gslcblas 所在的目錄,此處爲libs/;

       -I : 指定g++頭文件搜索目錄。

   (4) ldd MAIN:

         查看可執行程序MAIN是否成功地鏈接到動態庫文件 。

   

  

三、Linux 編譯項目經驗

       編寫源代碼時養成良好的習慣,可以節約不少力氣。用慣了Window 下的強大人性化的IDE,將代碼遷移到Linux下時會遇到一系列代碼編寫問題。

      1  頭文件和源文件必須分開,這樣便於以後編譯或者編譯成庫發佈。

      2  函數的實現最好不要寫在頭文件中,不要隨手寫在包含類聲明的頭文件中。

     

     

           




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