簡體   English   中英

說明Clang動態/靜態庫鏈接過程

[英]Explaining Clang dynamic/static library linking process

我正在構建自己的庫,並對最終的可執行文件鏈接過程的工作方式感到困惑。

我有一個使用CoreLocation標頭的MyLibrary.framework

當我將Mach-o type設置為static ,即使沒有在“鏈接的框架和庫”中鏈接CoreLocation.framework ,框架也可以毫無問題地構建。

當我將MyLibrary.framework鏈接到我的iOS測試項目時,必須添加CoreLocation.framework ,因為否則會出現未引用符號錯誤。


為什么構建我的靜態庫不需要引用CoreLocation,為什么構建我的應用程序需要鏈接到CoreLocation? 那里發生了什么?


梅基的答案在這里:

靜態庫中的Objective-C類別

很好地解釋了編譯/鏈接過程。 .a文件是.o文件的(.a)行。

每個.o文件不僅包含其具有的符號,還包含其所需的符號。

僅在可執行文件鏈接過程中,鏈接程序才會解析可執行文件中的所有符號,該文件引用了靜態庫,而靜態庫引用了CoreLocation庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM