文章

Xcode Sym

隐藏在使用Xcode构建的静态库中的符号

汇编控制为项目内共有

1
2
3
4
5
6
7
8
9
10
11
.global _my_public_add      // 声明my_public_add为全局符号
.private_extern _my_private_add // 声明my_private_add为私有外部符号
.section .text      // 代码段

_my_public_add:
    ADD r0, r0, r1  // 将r0和r1相加,结果放入r0
    BX lr           // 返回到链接寄存器中的地址

_my_private_add:
    SUB r0, r0, r1  // 将r1从r0中减去,结果放入r0
    BX lr           // 返回到链接寄存器中的地址

C++设置

Cflags 添加 -fvisibility=hidden

Symbols Hidden By Default 选择Yes

//———————————————————–

隐藏在使用Xcode构建的静态库中的符号 是指在编译和链接过程中,一些函数、变量或类被标记为私有,不对外暴露其符号信息。这样做的目的是为了保护代码的安全性和知识产权,同时减少对外部使用者的依赖。

隐藏符号可以通过以下几种方式实现:

静态库的编译选项:在Xcode中,可以通过设置编译选项来控制符号的可见性。使用”-fvisibility=hidden”参数可以将所有符号默认设置为隐藏,然后通过使用”attribute((visibility(“default”)))”来显式地将需要对外暴露的符号设置为可见。

链接器选项:在链接过程中,可以使用”-visibility hidden”参数将所有符号默认设置为隐藏,然后通过使用”-exported_symbol”参数来显式地将需要对外暴露的符号设置为可见。

隐藏符号的优势包括:

代码安全性:隐藏符号可以防止他人直接调用或修改库中的私有函数和变量,提高代码的安全性和防护能力。

减少命名冲突:隐藏符号可以避免与其他库或应用程序中的相同符号发生命名冲突,提高代码的可移植性和可靠性。

简化接口:隐藏符号可以隐藏内部实现细节,只暴露必要的接口,简化库的使用方式,提高代码的可读性和易用性。

隐藏符号的应用场景包括:

开发框架和库:隐藏符号可以用于开发框架和库,将内部实现细节隐藏起来,只暴露必要的接口给外部使用者。

私有函数和变量:隐藏符号可以用于标记一些私有函数和变量,防止他人直接调用或修改。

插件和扩展:隐藏符号可以用于插件和扩展,将插件的内部实现细节隐藏起来,只暴露必要的接口给主程序。

本文由作者按照 CC BY 4.0 进行授权