我正在尝试使用Autotools来构建我需要与某些库链接的C程序。它只包含一个C源文件。
这是与之关联的Makefile.am:
bin_PROGRAMS=game
game_SOURCES=main.c
game_CFLAGS=`pkg-config --cflags libglfw`
game_LDFLAGS=`pkg-config --libs libglfw`
当我运行make时,它会尝试使用它编译它:
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主要内容?
答案 0 :(得分:11)
您可以从不滥用LDFLAGS开始。 LDFLAGS用于链接器标志。使用foo_LDADD(用于可执行文件)或foobar_LIBADD(在生成库时)列出链接库。
另外,在Makefile.am中运行pkg-config是不必要和浪费的。只需使用:
game_CFLAGS = ${libglfw_CFLAGS} game_LDADD = ${libglfw_LIBS}在
libglfw_CFLAGS,LIBS
:中填充了 configure.ac
PKG_CHECK_MODULES([libglfw], [libglfw])