C C 條件編譯靜態庫或動態庫

2022-06-06 08:27:12 字數 936 閱讀 8284

==》windows 下方法:

1.方法一:vs工程中中直接新增

1.1在vs的屬性-》常規-》附加庫目錄,添上資料夾的路徑:例如:lib/x64;

1.2輸入的附加依賴項,新增上庫的名字,例如:dmapi.lib

1.3 對用到該庫的**進行,巨集包含,例如:

#ifdef log_xy

#endif

1.4 當你在工程編譯時,在c/c++-》預處理器-》預處理器定義,中未定義log_xy 時,就不會依賴庫dmapi.lib

2.方法二:在**中新增

#ifdef _win32

#ifdef log_xy

#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")

#else

//#pragma comment(lib,"..\prj_cpt_dm7\\lib\\x64\\dmapi.lib")

#endif

#endif

即可。==》linux 下,比較簡單:

在makefile 中庫和標頭檔案中,用巨集區分即可,例如:

log_xy_flag=0

...ifeg($log_xy_flag), 1)

logxylib=-l/opt/test/ -ldmapi

else

logxylib=

endif

...然後編譯加上上面的logxylib就可以了。

注:在新增新功能含有新的依賴庫時,為防止在僅需要舊的功能時,依然要依賴了新的依賴庫,就會用到以上方法。

如何編譯為靜態庫或動態庫

要將專案編譯為庫,使用cmake的add library命令 add library static shared module exclude from all source1 source2 sourcen 其中,引數static,shared,module指定生成庫是靜態庫 動態庫或module...

c c 靜態庫動態庫( )

預處理 gcc g e test.cpp 編譯主要動作 將預處理後的檔案轉換為彙編檔案,裡面為彙編指令 gcc g s test.cpp 彙編主要動作 將彙編檔案轉換為目標檔案,生成.o檔案,即目標檔案 gcc g c test.cpp 主要動作 將目標檔案和庫檔案集成為可執行檔案 鏈結主要動作 將...

編譯靜態庫編譯動態庫

編譯靜態庫 cr標誌告訴ar將object檔案封裝 archive 我們可以使用nm s 命令來檢視.a檔案的內容 ar cr libmyhello.a hello.o 或 cvr 編譯動態庫 gcc c fpic test1.c gcc c fpic test2.c fpic告訴gcc將源 編譯成...