使用gcc -c * .c编译源文件到目标文件中

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

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

gcc -c *.c 

它说操作系统将用所有C文件名replace* .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("%s\n", argv[i]); return 0; } 

Unix上的示例输出:

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

Windows上的示例输出:

 C:\Windows\system32>a.exe C:\* C:\* C:\Windows\system32> 

如果您想让别的程序扩展您的程序的通配符,请使用MinGW (MSYS)或Linux Windows子系统 (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$