gpt4 book ai didi

autotools - 链接器标志位于错误的位置

转载 作者:行者123 更新时间:2023-12-04 06:27:34 24 4
gpt4 key购买 nike

我正在尝试使用 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

然而这是错误的,因为库链接标志必须在最后,否则它会给出关于 undefined reference 的错误。例如,如果我运行这个:
gcc `pkg-config --cflags libglfw` -g -O2   -o game game-main.o `pkg-config --libs libglfw`

它编译得很好。

我怎样才能使 LDFLAGS 主要附加在末尾而不是中间?

最佳答案

您可以从不滥用库的 LDFLAGS 开始。 LDFLAGS 用于链接器标志。使用 foo_LDADD(对于可执行文件)或 foobar_LIBADD(在生成库时)来列出链接库。

此外,在 Makefile.am 中运行 pkg-config 是不必要且浪费的。只需使用:

game_CFLAGS = ${libglfw_CFLAGS}
game_LDADD = ${libglfw_LIBS}
libglfw_CFLAGS,LIBSconfigure.ac 中填充了这个:
PKG_CHECK_MODULES([libglfw], [libglfw])

关于autotools - 链接器标志位于错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com