私はAutotoolsを使って特定のライブラリとリンクする必要のあるCプログラムをビルドしようとしています。 1つのCソースファイルのみが含まれています。リンカーのフラグが間違っている場所
これは、それに関連付けられたMakefile.amである:私はmakeを実行すると
bin_PROGRAMS=game
game_SOURCES=main.c
game_CFLAGS=`pkg-config --cflags libglfw`
game_LDFLAGS=`pkg-config --libs libglfw`
、それはこの使用して、それをコンパイルしようとします:
gcc `pkg-config --cflags libglfw` -g -O2 `pkg-config --libs libglfw` -o game game-main.o
をしかし、これは、ライブラリのリンクとして、間違っていますフラグは最後になければなりません。そうしないと、未定義の参照についてエラーが発生します。たとえば、これを実行すると:
gcc `pkg-config --cflags libglfw` -g -O2 -o game game-main.o `pkg-config --libs libglfw`
コンパイルが正常に実行されます。
LDFLAGSプライマリが途中ではなく最後に追加されるようにするにはどうすればよいですか?
どのように私はむしろautotoolsのよりも、通常のメイクファイルでこれを解決するのでしょうか?私が知る限り、makeはLDADDを尊重しません(autotoolsだけです)。 –
フォローアップ:通常のmakefileでは、解決策は 'LDFLAGS = -lm'ではなく' LOADLIBES = -lm'を使うことです。 –