سؤال

وكيف قمت بتعيين ترتيب المكتبات في automake؟

في ملف صباحا بلدي لدي شيء من هذا القبيل:

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la
myprog_LDFLAGS = -static -L/home/user/lib -ladhoc

والآن، عندما جمع أحصل على هذا الخط ترجمة مشابهة جدا:

gcc -static myprog-myprog.o -o myprog -L/home/user/lib -ladhoc ./.libs/libmine.a

والمشكلة هي أن libmine.a يعتمد على libadhoc.a، لذلك يجب أن يكون الخط الترجمة:

gcc -static myprog-myprog.o -o myprog ./.libs/libmine.a -L/home/user/lib -ladhoc

وكيف قمت بتعيين ترتيب المكتبات في automake؟ (أو ربما عمل حول.. كيف يمكنك تكرار كل المكتبات في خط الترجمة وهذا ما أقوم به في بلدي مخصص Makefiles)

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

المحلول

ومن دليل Automake (معظمها §8.1.2 ولكن أيضا §8.4 ):

<اقتباس فقرة>   

وPROG_LDADD غير مناسب ل   يمر الأعلام رابط الخاصة بالبرامج   (باستثناء -l، -L، -dlopen و   -dlpreopen). بذلك، استخدم   متغير PROG_LDFLAGS لهذا   الغرض.

وهذا يعني يمكنك (ولكن في الواقع يجب) استخدام -l و-L في LDADD، وليس في LDFLAGS. وبعبارة أخرى يجب أن Makefile.am الخاص بك ببساطة قراءة

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la -L/home/user/lib -ladhoc
myprog_LDFLAGS = -static 

نصائح أخرى

وفكرة واحدة من كتاب automake ( http://sources.redhat.com/ autobook / autobook / autobook_92.html ): إنشاء مكتبة الراحة من libmine وlibadhoc، وصلة myprog ضد ذلك

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