編譯鏈結問題

2021-07-14 19:47:26 字數 342 閱讀 8761

編譯:

1、檢查標頭檔案有相應的函式和變數宣告;

2、原始檔語法問題。

只與目標檔案相關,即*.o     window下目標檔案可打包為lib,而linux下是打包為靜態庫(.a)或者動態庫(*.so)。

vs工程下,如果某些*.cpp需要編譯成*.obj,則必須在介面上新增到工程中的源資料夾中,這樣才能生成目標檔案.obj,不然在鏈結時會出現lnk2019,無法解析外部符號的錯誤。

vs下如果obj對應的原始檔更改了,有時會鏈結出錯,lnk2019錯誤,需要把之前的obj檔案手動刪掉,再編譯鏈結就可以了。這也是為什麼很多linux下的makefille最後的clean會rm  -f  *.o

編譯鏈結的問題

在用gcc編譯鏈結的時候,經常出現找不到庫或者標頭檔案的問題可以用 i 指定標頭檔案的路徑,用 l指定庫的路徑,用 l指定具體的庫檔案 例如 cc arm linux 在鏈結的時候指定庫檔案和路徑 test test.o cc gcc test.o o test l usr local jpeg l...

C mysql編譯鏈結問題

首先在源 裡面包含標頭檔案mysql.h include usr include mysql mysql.h 這樣可以不用在編譯選項中加 i usr include mysql 直接 include mysql.h 然後在編譯選項中加入 i usr include mysql 編譯選項 gcc i ...

關於linux編譯鏈結庫問題

具體的需求是利用第三方的庫,自己生成乙個自己的庫,在自己的n個產品專案中都可以使用這個庫。也就是 本文是記錄一些實際操作,並不能得出什麼結論,反而會丟擲一些問題 樓樓菜鳥乙個 1.利用第三方庫編譯自己的庫,有兩種情況 a.cmake中 包含所有的與自己庫相關的cpp hpp 檔案時 b.cmake中...