运行./configure-D_GNU_SOURCE和将AC_GNU_SOURCE宏添加到configure.AC之间有什么区别?

运行./configure-D_GNU_SOURCE和将AC_GNU_SOURCE宏添加到configure.AC之间有什么区别?,c,autotools,C,Autotools,我正在尝试编译我的项目,但当我不使用/configure-D_GNU_SOURCE时,它失败了。我想在构建系统中解决这个问题,并尝试在configure.ac中定义它,但没有解决生成问题 当我将AC_GNU_SOURCE放入configure.AC并运行autoconf生成新的配置脚本时,我可以看到它添加了以下行: $as_echo "#define _GNU_SOURCE 1" >>confdefs.h 当我运行make时,它无法生成我的文件。如果我运行以下命令,则会成功: .

我正在尝试编译我的项目,但当我不使用/configure-D_GNU_SOURCE时,它失败了。我想在构建系统中解决这个问题,并尝试在configure.ac中定义它,但没有解决生成问题

当我将AC_GNU_SOURCE放入configure.AC并运行autoconf生成新的配置脚本时,我可以看到它添加了以下行:

 $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
当我运行make时,它无法生成我的文件。如果我运行以下命令,则会成功:

./configure CFLAGS=-D_GNU_FLAGS

知道我做错了什么吗?

(怎么做?)您是否在项目的源代码中包含confdefs.h?配置中有流程变量。仅仅因为你把它添加到confdefs.h中并不意味着一切都很糟糕。您可以编辑configure,将-D_GNU_标志作为CFLAGS的一部分。(不知道你想做什么,或者为什么。)当你没有这一点的时候,它到底是如何失败的(确切的输出是什么?)?