سؤال

أحاول أن أجعل LLVM مضمنة وظيفة من مكتبة.

لدي ملفات LLVM Bitcode (التي تم إنشاؤها يدويًا) قمت بربطها مع llvm-link, ، ولدي أيضًا مكتبة (مكتوبة في C) تم تجميعها في Bitcode بواسطة clang وأرشفة مع llvm-ar. تمكنت من ربط كل شيء معًا والتنفيذ ولكن لا يمكنني الحصول على الحصول على LLVM لتضمين وظيفة من المكتبة. أي فكرة عن كيفية القيام بذلك؟

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

المحلول

بعد ربط ملفات Bitcode مع المكتبة ، هل تقوم بتشغيل تمريرة داخلية على رمز Bitcode المرتبط؟ تمريرة داخلية تجعل جميع الوظائف (إلى جانب ذلك main()) ثابت ويخبر مولد المُحسِّن/الكود أن الوظائف يمكن أن يتم ضمها بأمان دون إبقاء نسخة متاحة لبعض المرجع الخارجي (غير الموجود).

أقوم بربط ملفات Bitcode ومكتبات Bitcode معًا يدويًا باستخدام التعليمات البرمجية المستعارة من llvm-ld وأنا أقوم بالتمريرة الداخلية ، لكنني لست متأكدًا مما إذا llvm-link هل يمر الاستيعاب أم لا.

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