تجنب تصدير الرموز من المنافعين التنفيذيين على Linux

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

سؤال

أجد أنه عندما أقوم بربط قابلة للتنفيذ مقابل مكتبة ثابتة (.A) ، فإن الرموز من المكتبة الثابتة تنتهي بتصديرها بواسطة الملف القابل للتنفيذ. أود تجنب هذا ولا تصدر شيئًا.

لقد حاولت تقديم برنامج نصي للإصدار ، لكن يبدو أنه لا يوجد فرق. محتويات نص الإصدار الخاص بي هي كما يلي:

{
    global:
        main;
    local:
        *;
};

هل هناك طريقة لعدم تصدير الرموز من قابلة للتنفيذ عند الارتباط في مكتبة ثابتة؟ لا يمكنني إعادة ترجمة المكتبة الثابتة نفسها.

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

المحلول

لا تقوم التنفيذيون بتصدير الرموز افتراضيًا ، ولن تفعل ذلك إلا إذا كنت تستخدم -WL ،-التصدير الديناميكي. هذا ضروري فقط إذا كنت تقوم بتحميل المكتبات ديناميكيًا تحتاج إلى ربطها برموز في المقدمة الرئيسية (هذه حالة شائعة في C ++ إذا كانت مكتباتك تحتوي على فئات تتجاوز الأساليب الافتراضية في EXE)

ربما تكون مربكًا لتصدير الرموز مع وجود رموز تصحيح. سيتم إنتاج رموز التصحيح لصالح مصحح الأخطاء (إذا لم تقم بتجريد EXE) ، ولكن ليس من المطلوب تشغيله.

نصائح أخرى

يستخدم strip ?

$ man rip

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