我正在尝试编译一个包含main.c和大量.c和.h文件的程序。 有没有办法编译和链接而不传递gcc命令中的所有.c文件 像
gcc main.c file.c file2.c -o main
答案 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)
答案 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