سؤال

لذلك ، أنا أقوم ببناء مشروع ، ويستخدم وظائف من مكتبة مجمعة (.dylib أو .Soo). لدي الرؤوس وملفات المكتبة (كل هذا جزء من Qtroot ، راجع للشغل) في المواقع المناسبة ، ولكن عندما أحاول بناء مشروعي في Xcode ، أحصل على خطأ تصحيح الأخطاء:

DYLD: مكتبة غير محملة: @RPATH/LIBRIO.So تشير من:/المستخدمون/Paulthompson/المستندات/البرمجة/البناء منتجات/تصحيح/macheliossim.app/محتويات/macos/macheliossim السبب: الصورة غير موجودة حمولة التحميل المشترك. تنسيق البيانات غير متوفرة مؤقتًا ، سيتم إعادة تجريبها بعد "متابعة". (لا يمكن الاتصال في اللودر في الوقت الحاضر ، يتم قفله.)

الآن ، سيتم تشغيل البرنامج نفسه الذي تم إنشاؤه بشكل جيد إذا فتحته من الباحث ، لكن كلما حاولت تشغيله من Xcode ، فإنه يحرق في وجهي. ما هو هذا الشيء RPATH ، ولماذا لا يمكن لتصحيح الأخطاء العثور على المكتبات ، على الرغم من أن Xcode نفسها يعرف مكانها ، ويبدو أن البرنامج عند الركض من الباحث يمكن أن يجدها أيضًا؟

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

المحلول

http://en.wikipedia.org/wiki/rpath_(linking)

إنه مسار مخزّن في الثنائي للعثور على libs المشتركة. عندما تبدأ التطبيق من Finder ، فمن المحتمل أن تكون حزمة تطبيق؟ عند إنشاء حزم التطبيق ، يتم نسخ المكتبات المشتركة في حزمة التطبيق ، وتصبح مسارات المكتبات المجمعة نسبية بعد ذلك. (executable_path /../ frameworks/foobar). كيف قمت بإنشاء الإصدار الذي يعمل من Finder؟

هل يحدث الخطأ أعلاه في وقت الرابط أو عند بدء التطبيق من XCode؟ (في الحالة الأخيرة ، حاول مع dyld_library_path)

أيضًا ، يبدو امتداد.

نصائح أخرى

أضف RPTH في مرحلة الارتباط ، كما في هذا (في خالق QT) مثال:

libs += -l/usr/local/root/lib -lgui -lcore -lcint -lrio -lnet -lhist -lgraf -lgraf3d -lgpad -ltree -lrint -lpostscript -lmatrix -lphysics -lmathcore -lthread -lp -wl ، -rpath ،/usr/local/root/lib -lm -ldl

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