生成静态库的一些问题-all_load

132 篇文章 0 订阅
1、使用类目
在我们的静态库中涉及到 类目 catagory的使用时,会崩溃;
此时我们需要设置project的Info里面的Link Flag处,增加-all_load,这样会链接所以存在的symbol;
这是我们常用的一种处理方法,除此之外我们还可以使用以下方法:
若我们使用了类目
"NSObject+SBJSON.h" 
我们在h,m文件分别增加以下声明
@interface DummyClass_NSObject_SBJSON {} 
@end 
@implementation DummyClass_NSObject_SBJSON 
@end 


2、使用nib
若封装静态库的时候我们使用了xib文件,亦有可能会出现此种形式的崩溃
Unknown class XXX in Interface Builder file
此处由于在代码中class XXX你并未引用过,具体的原理我也没有特别弄清楚,还希望高手帮助我们解释一下;
我暂时做的处理时在接口处优先将这些 class 执行一个方法, 比如 [Class class];

这个问题的原因应该是由于原先我的代码中并没有调用到 class XXX 相关方法;
而静态库的一个优点是:链接器可以从静态库中只取出需要的部分来做链接。故没有链接 这些没有调用过方法的 class;
暂时用上面的解决方案解决了,不知道有没有更好的方法来解决这个问题;


以下两种情况都可以设置project的Info里面的Link Flag处,增加-all_load,解决
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段命令是 Keil uVision5 软件的 armclang 编译器的链接命令,用于将目标文件链接成可执行文件。这个命令包含了以下参数: - `--cpu Cortex-M7.fp.dp`:指定链接器使用的目标处理器。 - `*.o`:指定链接器需要链接的目标文件,`*.o` 表示链接当前目录下所有的 `.o` 目标文件。 - `--library_type=microlib`:指定链接器使用的库类型为 `microlib`。 - `--strict`:启用严格模式。 - `--scatter "STM32H747I_DISCO_CM7\Exe\STM32H747I_DISCO_CM7.sct"`:指定链接器使用的链接脚本文件。 - `--summary_stderr`:将链接器的摘要信息输出到标准错误流。 - `--info summarysizes`:输出链接器的摘要信息。 - `--map`:生成链接器映射文件。 - `--load_addr_map_info`:生成可加载地址映射信息。 - `--xref`:生成交叉引用表。 - `--callgraph`:生成函数调用图。 - `--symbols`:生成符号表。 - `--info sizes`:输出每个目标文件的大小信息。 - `--info totals`:输出总大小信息。 - `--info unused`:输出未使用的符号信息。 - `--info veneers`:输出使用的 Veneer 信息。 - `--list "STM32H747I_DISCO_CM7.map"`:将链接器的详细信息输出到指定的文件中。 - `-o STM32H747I_DISCO_CM7\Exe\STM32H747I_DISCO_CM7.axf`:指定链接器生成的可执行文件的名称和路径。 你可以根据需要进行调整,例如,修改链接器使用的目标处理器、库类型、链接脚本文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值