使用 gcC语言 c *.c 将源代码编译为目标文件



我的操作系统是Windows 10。这次我正在使用命令提示符进行编译。

根据我正在阅读的书,要编译所有源文件并使其成为目标文件,(在当前目录中(通过键入以下命令来完成:

gcc -c *.c

它说操作系统将用所有 C 文件名替换 *.c

但是为什么我会收到此错误?

gcc: error: *.c: Invalid argument
gcc: fatal error: no input files
compilation terminated.

我在正确的目录中。 当我使用它们各自的名称编译我的源文件时,它工作正常。但是"*.c"不起作用。

使用"*.o"链接目标文件时出现相同的错误

该命令不适用于Windows操作系统吗?如果不是,窗户是什么?

新手在这里。

在Unix系统和环境(如MSYS或Cygwin(上,通配符由shell扩展(依赖(,但在Windows CMD中,通配符由接收的程序扩展和解释。这听起来很奇怪,但cmd.exe不支持通配符扩展(作为解释器(,但它的一些内置命令支持,如COPY

使用简单的程序进行验证。

#include <stdio.h>
int main(int argc, char *argv[]){
int i;
for (i = 1; i < argc; i ++)
printf("%sn", argv[i]);
return 0;
}

Unix 上的示例输出:

$ ./a.out /*
/bin
/boot
/dev
...
/usr
/var
$ ./a.out /*
/*
$

Windows上的示例输出:

C:Windowssystem32>a.exe C:*
C:*
C:Windowssystem32>

如果你想让其他东西扩展程序的通配符,请使用 MinGW (MSYS( 或 Windows Subsystem for Linux(Win 10 1607 及更高版本(。

在Windows中,不支持通配符,因此您会看到错误。

但是,在UNIX中,您使用的是正确的:

Georgioss-MacBook-Pro:~ gsamaras$ nano main.c
Georgioss-MacBook-Pro:~ gsamaras$ nano fun.h
Georgioss-MacBook-Pro:~ gsamaras$ nano fun.c
Georgioss-MacBook-Pro:~ gsamaras$ gcc -c *.c
Georgioss-MacBook-Pro:~ gsamaras$ 

最新更新