لا يمكن تجريد جميع الرموز غير الضرورية على تطبيق Mac OS X C ++؟

StackOverflow https://stackoverflow.com/questions/4236525

سؤال

أحاول تجريد تطبيق Mac OS X لجميع الرموز غير الضرورية. إذا قمت بذلك على تطبيق Linux الخاص بي باستخدام "-SHRIP-INNNEDED" ، فإن جدول الرمز الموجود في طلبي فارغ ولا يعيد شيئًا.

على Mac OS X ، أرى رموزًا تتعلق بإدخالات TypeInfo و VTable لفصولي ، وكذلك بعض الوظائف. أفضل ما يمكنني قوله ، يحدث هذا في الوظائف المحددة في الرؤوس وموضوعها. الوظائف غير المحددة القادمة من المكتبات الخارجية موجودة في ناتج NM ، ولكنها تحمل علامة "U".

الشريط -u -r myapp لا يبدو أنه يزيلها.

محاولة وضعها في ملف إزالة والقيام: الشريط -u -r -r remove_file.txt myapp

لا يعمل أيضًا. هذا ثنائي متجانس تبعيات المكتبات المشتركة الوحيدة على corefoundation وأطر Veclib.

أي اقتراحات من فضلك؟

هل كانت مفيدة؟

المحلول

ليس لدي حل محدد (ما زلت في عملية تعلم C ++ (والهدف C ++) وأتعلم التعامل مع هذه الأشياء بنفسي) ولكن يمكنك البحث عن:

رؤية وظائف مضمّنة

و

ملاحظة تقنية TN2185: نصائح وحيل C ++ لنظام التشغيل Mac OS X

ما هو الإعداد الحالي لـ "الطرق المضمنة المخفية"؟ (انقر نقرًا مزدوجًا على الهدف في عمود المجموعات والملفات ، قم بالتبديل إلى إنشاء علامة تبويب ، أو التمرير لأسفل إلى توليد التعليمات البرمجية ، أو هذا الإعداد:

GCC_INLINES_ARE_PRIVAL_EXERN ، -FVIBILITY-INTINGENS-HIDDEN] "عند التمكين ، يتم الإعلان عن نسخ خارجية من الأساليب المضمنة" خارجيًا خاصًا "". )

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top