繁体   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