كيفية ربط باستخدام دول مجلس التعاون الخليجي دون -l ولا hardcoding مسار لمكتبة التي لا تتبع اصطلاح التسمية libNAME.so؟

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

سؤال

ولدي مكتبة مشتركة أود أن تصل للتنفيذ ضد استخدام دول مجلس التعاون الخليجي. المكتبة المشتركة له اسم غير قياسي لا من النموذج libNAME.so، لذلك لا يمكن استخدام الخيار -l المعتاد. (ويحدث أيضا أن تكون امتدادا بيثون، وهكذا لا يوجد لديه البادئة "ليب".)

وأنا قادرة على تمرير المسار إلى ملف مكتبة مباشرة إلى سطر الأوامر الارتباط، ولكن هذا يتسبب في مسار مكتبة لتكون ضمنية إلى القابل للتنفيذ.

وعلى سبيل المثال:

g++ -o build/bin/myapp build/bin/_mylib.so

هل هناك طريقة لربط هذه المكتبة دون التسبب في الطريق الذي ينبغي أن ضمنية إلى الملف القابل للتنفيذ؟

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

المحلول

وهناك ":" البادئة التي تسمح لك لإعطاء أسماء مختلفة لالمكتبات. إذا كنت تستخدم

g++ -o build/bin/myapp -l:_mylib.so other_source_files

ويجب بحث المسار الخاص بك ل_mylib.so.

نصائح أخرى

إذا يمكنك نسخ المكتبة المشتركة إلى دليل العمل عندما يتم استدعاء ز ++ ثم هذا يجب أن تعمل:

g++ -o build/bin/myapp _mylib.so other_source_files

إذا كنت على يونكس أو لينكس اعتقد انه يمكن إنشاء ارتباط رمزي إلى المكتبة في الدليل الذي تريد المكتبة.

على سبيل المثال:
ln -s build/bin/_mylib.so build/bin/lib_mylib.so

هل يمكن بعد ذلك استخدام -l_mylib

http://en.wikipedia.org/wiki/Symbolic_link

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