gpt4 book ai didi

CFLAGS CPPFLAGS 和 LDFLAGS 调用 cc 但不将值传递给 gcc

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:44 25 4
gpt4 key购买 nike

我编写了一个简单的 printf C 代码并制作了一个简单的 makefile。当我使用 CFLAGS、CPPFLAGS 和 LDFLAGS 运行 make 时,变量的值进入 cc 执行,然后是没有这些值的 gcc 执行,如下所示:

$ CFLAGS="-I." CPPFLAGS="-D TESTEDEFINE" CXXFLAGS="TESTECXXFLAGS" LDFLAGS="-L." LFLAGS="TESTELFLAGS" make
cc -I. -D TESTEDEFINE -L. teste.c -o teste
gcc -o teste teste.c

当我运行构建的程序时,定义未定义,因为它为我提供了未定义的 #else 的 printf。

测试.c

#include <stdio.h>

int main()
{
#if defined(TESTEDEFINE)
printf("TESTEDEFINE!!!");
#else
printf("!!!");
#endif
return 0;
}

生成文件

all: teste
gcc -o teste teste.c

最佳答案

这些变量是为了一致性、可读性和易用性。您的编译和生成文件都没有引用它们。编译器不会自动引用这些变量。

试试这个:

$ export CFLAGS="-I." CPPFLAGS="-D TESTEDEFINE" CXXFLAGS="TESTECXXFLAGS" LDFLAGS="-L." LFLAGS="TESTELFLAGS"
$ gcc $CFLAGS $CPPFLAGS $CXXFLAGS $LDFLAGS $LFLAGS -o teste teste.c

您还需要在 makefile 中定义它们并在编译器行中引用它们。

关于CFLAGS CPPFLAGS 和 LDFLAGS 调用 cc 但不将值传递给 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46221350/

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