用gcc编译.c

时间:2012-07-08 21:47:31

标签: c gcc

我正在尝试编译一个包含main.c和大量.c和.h文件的程序。 有没有办法编译和链接而不传递gcc命令中的所有.c文件 像

gcc  main.c file.c file2.c -o main

5 个答案:

答案 0 :(得分:6)

你的shell可以扩展通配符。所以你可以:

gcc *.c -o main

当然,您必须确保在您实际不想编译的目录中没有任何额外的*.c文件。更好的选择是使用构建系统,例如Make或SCons。

答案 1 :(得分:3)

'make'是构建C应用程序的工具。以下是hello world版本。

$ cat main.c 
#include <stdio.h>

int main (char *argv[], int argc) {
    printf("Hello World\n"); 
    return 0; 
}
$ make main
cc     main.c   -o main
$ ./main 
Hello World

依照Shahbaz评论编辑: 最初的问题是试图简化gcc的命令行。程序员的正确方向是学习make。由于make有一点学习曲线,我想提供一些有用的简单踩踏石。通过这种方式开始,您不需要make文件。只需输入'make programname',如上所示。 Make使用其默认规则和关联的varabiles。 $(CC)-c $(CFLAGS)$(CPPFLAGS)精明的程序员可以通过设置众所周知的变量来构建。

从这里可以修改一个makefile。本着踏脚石的精神,考虑一下这个trival makefile

$ cat makefile 

SRCS = main.c
OBJ = ${SRCS:.c=.o}
CC=gcc

main: ${OBJ}

$ make
gcc   main.o   -o main

通过设置众所周知的make变量CC来控制使用哪个编译器。 OBJ是从源文件列表中计算出来的。 trival目标在通往规则的道路上开始。

无论如何,我的希望是这篇文章和其他答案在那里获得原始提问者。

此致 -jk

答案 2 :(得分:0)

gcc -o main -I. `find . -name "*\.c"`

这样,如果您愿意,可以在子文件夹中包含.c和.h文件。

然而,这不是一个好方法。更好的方法是创建Makefile

答案 3 :(得分:0)

如果您询问命令行,可以使用通配符将所有.c文件指定为@ Way of One Way建议。但一般来说,使用“makefile”构建任意但非平凡大小的C应用程序,这些应用程序非常有用。

您可能需要阅读http://www.cs.umd.edu/class/fall2002/cmsc214/Tutorial/makefile.html

等教程

答案 4 :(得分:0)

如前所述,make是最好的方式 在每个方面了解您的需求

此外,重要的是还要使用一些标志来帮助你进行编码:

-Wall -> sets all warning flags
-g, -ggdb -> generates debug code
-ansi, -std=c99

关于如何使用make的一本非常好的书是, http://shop.oreilly.com/product/9780937175903.do