لا يمكن تجريد جميع الرموز غير الضرورية على تطبيق Mac OS X C ++؟
-
26-09-2019 - |
سؤال
أحاول تجريد تطبيق 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] "عند التمكين ، يتم الإعلان عن نسخ خارجية من الأساليب المضمنة" خارجيًا خاصًا "". )