8

automakeでライブラリの順序をどのように設定しますか?

私のamファイルには次のようなものがあります。

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でライブラリの順序をどのように設定しますか?(または、回避策かもしれません。コンパイル行ですべてのライブラリをどのように繰り返しますか。これは、カスタムMakefileで行うことです。)

4

2 に答える 2

9

Automakeマニュアルから(主に§8.1.2だけでなく§8.4):

PROG_LDADDプログラム固有のリンカ フラグを渡すのには不適切です ( -l-L-dlopenおよび を除く-dlpreopen)。したがって、 PROG_LDFLAGSこの目的のために変数を使用します。

これは、 ではなく で-land-Lを使用できることを意味します (ただし、実際には使用する必要があります) 。言い換えれば、あなたは単に読むべきですLDADDLDFLAGSMakefile.am

myprog_DEPENDENCIES = adhoc-target
myprog_SOURCES = myprog.c
myprog_LDADD = libmine.la -L/home/user/lib -ladhoc
myprog_LDFLAGS = -static 
于 2009-10-31T07:53:53.863 に答える
2

automake ブック ( http://sources.redhat.com/autobook/autobook/autobook_92.html ) からの 1 つのアイデア: libmine と libadhoc から便利なライブラリを作成し、それに対して myprog をリンクします。

于 2009-10-30T13:56:10.657 に答える