这行shell脚本在做什么

时间:2010-09-24 06:11:36

标签: shell

这个问题可能很简单,但我找不到确切的答案..

在shell脚本中我有这样一行,

export CFLAGS=" -w -Iinc/ -Isrc/"

我不知道-w-I选项在这里做什么?

我所知道的这一行包括目录incsrc

任何帮助都会很棒

3 个答案:

答案 0 :(得分:2)

这只是设置一个环境变量。我猜它已经习惯了为GCC设置标志。

来自man gcc

   -I dir
       Add the directory dir to the list of directories to be searched for
       header files.  Directories named by -I are searched before the
       standard system include directories.  If the directory dir is a
       standard system include directory, the option is ignored to ensure
       that the default search order for system directories and the
       special treatment of system headers are not defeated .

   -w  Suppress all warnings, including those which GNU CPP issues by
       default.

答案 1 :(得分:0)

它们是编译器的参数。如果是gcc,那么:

  • -w :禁止显示所有警告消息。
  • -I :将目录dir添加到要搜索头文件的目录列表中。在标准系统包含目录之前搜索由'-I'命名的目录。如果目录dir是标准系统包含目录,则忽略该选项以确保系统目录的默认搜索顺序和系统标头的特殊处理不会失败(请参阅系统标头)。

答案 2 :(得分:0)

CFLAGS是环境变量的名称。它被设置为值-w -Iinc/ -Isrc/(初始空间没用,斜线也是如此,顺便说一句。)

这会影响C编译器编译的机制是通过make程序。默认情况下,make实用程序使用此规则将C程序编译为目标文件:

.c.o:
    $(CC) $(CFLAGS) -c $<

并从环境变量 $(CFLAGS)中导入生成变量 $CFLAGS(它们是截然不同的;不要混淆它们)。< / p>

您可以在http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html

上阅读有关make变量,制定规则及其默认值的所有内容

对于启蒙试试这个:创建 Makefile,将熟悉的helloworld.c放在同一目录中并输入make helloworld。怎么了?为什么?如果你明白这一点,你就会成为make大师的一个巨大飞跃: - )