如何从 OS X 上的目标文件中删除单个名称

How to strip single name from object file on OS X

我正在按照 OS X 上的一些 Linux 说明进行操作,但卡在了一行中:

strip -N main my_file.o

strip 的 OS X 版本没有 -N 选项,我已经阅读了手册页两次,但我不确定如何执行此操作。

那么如何从 OS X 上的符号 table 中删除单个名称?

如您所说,strip 的 OSX 版本不允许这样做;因此,唯一的方法是在 声明 :

中使用它来限制其在代码中的可见性
__attribute__((visibility("hidden"))) void MyFunction1();

或者,您可以使用 -fvisibility=hidden 进行编译,并在上述 __attribute__ 中使用 "default" 以仅公开您想要的符号。

无论如何,这是一种更好的方法,因为它不需要外部构建步骤。

注意:当 Objective-C 代码被引入代码库时,我发现这并没有像预期的那样工作...

Reference