Search code examples
linuxmacossymbol-table

How to strip single name from object file on OS X


I am following some Linux instructions on OS X and am stuck on one line:

strip -N main my_file.o

The OS X version of strip doesn't have an -N option and I've read through the man page twice but am just not sure how to do this.

So how do I strip a single name from the symbol table on OS X?


Solution

  • As you say, the OSX version of strip doesn't allow this; the only way therefore is to limit its visibility in code using this on the declaration:

    __attribute__((visibility("hidden"))) void MyFunction1();
    

    Alternatively you could compile with -fvisibility=hidden and use "default" in the above __attribute__ to only expose the symbols you want.

    This is a better approach anyway, as it does not require an external build step.

    Note: I have found this doesn't work as expected when Objective-C code is introduced into the code base...

    Reference