我正在尝试使用Autotools来构建我需要与某些库链接的C程序.它只包含一个C源文件.
这是与它相关的Makefile.am:
bin_PROGRAMS=game
game_SOURCES=main.c
game_CFLAGS=`pkg-config --cflags libglfw`
game_LDFLAGS=`pkg-config --libs libglfw`
Run Code Online (Sandbox Code Playgroud)
当我运行make时,它尝试使用以下方法编译它:
gcc `pkg-config --cflags libglfw` -g -O2 `pkg-config --libs libglfw` -o game game-main.o
Run Code Online (Sandbox Code Playgroud)
但是这是错误的,因为库链接标志必须在最后,否则它将给出有关未定义引用的错误.例如,如果我运行这个:
gcc `pkg-config --cflags libglfw` -g -O2 -o game game-main.o `pkg-config --libs libglfw`
Run Code Online (Sandbox Code Playgroud)
它汇编很好.
我怎样才能使LDFLAGS primary在末尾而不是在中间附加?
use*_*515 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])
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |