c - ओएस एक्स लिंकर में जीएनयू के--ड्रैप लिंकर ध्वज के बराबर क्या है?



linker clang (1)

मैं जीएनयू टूलचैन के साथ ओएस एक्स पर संकलित सी प्रोग्राम को बंदरगाह करने की कोशिश कर रहा हूं, लेकिन इसका डिफ़ॉल्ट ld प्रोग्राम - --wrap फ्लैग का समर्थन नहीं करता, जो कि जीएनयू के ld में मौजूद है। यह जीएनयू के ld के मैन पेज से है:

--wrap symbol
    Use a wrapper function for symbol.  Any undefined reference to sym-
    bol will be resolved to "__wrap_symbol".  Any  undefined  reference
    to "__real_symbol" will be resolved to symbol.

    This  can  be used to provide a wrapper for a system function.  The
    wrapper function should be called "__wrap_symbol".  If it wishes to
    call the system function, it should call "__real_symbol".

    Here is a trivial example:

            void *
            __wrap_malloc (size_t c)
            {
              printf ("malloc called with %zu\n", c);
              return __real_malloc (c);
            }

    If you link other code with this file using --wrap malloc, then all
    calls to "malloc" will call the function  "__wrap_malloc"  instead.
    The  call  to "__real_malloc" in "__wrap_malloc" will call the real
    "malloc" function.

    You may wish to provide a "__real_malloc" function as well, so that
    links  without the --wrap option will succeed.  If you do this, you
    should not put the definition of "__real_malloc" in the  same  file
    as  "__wrap_malloc";  if you do, the assembler may resolve the call
    before the linker has a chance to wrap it to "malloc".

क्या इस को प्राप्त करने का एक पोर्टेबल तरीका है?


मुझे एक समान मुद्दे का सामना करना पड़ा लेकिन कभी भी कोई समकक्ष नहीं मिला। निम्नलिखित उपाय आपके लिए क्या हासिल करना चाहते हैं, इसके आधार पर आपकी सहायता कर सकते हैं।

1) ओएस एक्स पर जोड़ने के दौरान प्रतीकों को लपेटें

2) https://discussions.apple.com/thread/617779?start=0&tstart=0





ld