如何在linux下完成一個項目的搭建

最近在學習"極客時間"中盛延敏老師的課程——"網絡編程實戰"。但是有些代碼自己寫的時候發現總是報錯 ,不是這裏沒找到no such file or directory,就是莫名的 xxxx函數沒有定義,我倒。花了好幾天時間重新去研究編譯鏈接這一塊,專門來做一個總結。

我這次用盛延敏老師定義的頭文件common.h,其中包含了常用的網絡編程頭文件,以及他自己聲明的一些函數。這裏就涉及到include路徑。如果找不到xxx.h頭文件,顯示“no such file or directory”,就是自己沒設置好include路徑,你想啊,比如你現在下了一個項目,我們就把這個叫b文件夾,裏面有myhead.h這種頭文件,你直接去編譯,那肯定不行,就比如編譯器一開始只能去搜文件夾們a,它就只會在a中去找,現在你不把頭文件放到他認識的文件夾們a了 ,直接丟在b文件夾,它肯定是不會去找的。所以你得按照它的找東西習慣,那麼學習它找頭文件的順序就至關重要,所以我先在這裏總結了編譯器找頭文件的順序:

如何查看和修改gcc、g++默認include路徑

然後現在我們搞定了頭文件#include的問題,可是你一編譯又錯了,顯示xxxx函數沒定義,那肯定了,你剛剛只包含了頭文件 ,裏面全是需要用的頭文件和一些需要用的函數的聲明,人家的實現全部打包起來扔到一個庫裏面了 ,這裏的庫文件是libyolanda.a,可以看出來是個靜態庫,其中包含了頭文件中聲明的函數的實現。

那麼此時你肯定也得告訴編譯器,誒,我的庫文件放在那裏額。不然編譯器很固執只會找它規定的查找路徑,然後我又總結了下編譯器查找庫文件的順序:

linux下鏈接庫文件默認搜索路徑

這樣再把庫文件路徑一搞定,整個可執行文件就弄好了,就可以執行了。我在這裏用的是CMakelist.txt直接運行的指令cmake,然後make一下就行了 。

 

總結一下:一開始秋招的時候天天背源碼生成可執行文件的過程包括“預處理,編譯,彙編,鏈接”,感覺裏面知識點是滾瓜爛熟了,可是和實際結合的時候就真發現成了紙上談兵了。這裏由於我用了cmake工具來輔助,所以只用幫着把include和庫文件的路徑設計一下就可以了。不過也是最基礎的~還是要不斷練習啊。

 

發佈了275 篇原創文章 · 獲贊 37 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章