Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用多个文件指定-c_C_File_Gcc_Makefile - Fatal编程技术网

无法使用多个文件指定-c

无法使用多个文件指定-c,c,file,gcc,makefile,C,File,Gcc,Makefile,我的makefile有这个问题: gcc -c src/uno.c src/uno.h -o src/uno.o gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files 如何创建包含多个文件的.o文件?头文件(本例中为src/uno.h)从文件中引用,不应在命令行中再次命名: gcc -c src/uno.c -o src/uno.o 您可能必须使用-I标志来命名查找它们的目录。但是如果您在源代码中包

我的
makefile
有这个问题:

gcc -c src/uno.c src/uno.h -o src/uno.o
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files
如何创建包含多个文件的
.o
文件?

头文件(本例中为
src/uno.h
)从文件中引用,不应在命令行中再次命名:

gcc -c src/uno.c -o src/uno.o
您可能必须使用
-I
标志来命名查找它们的目录。但是如果您在源代码中包含“uno.h”,那么gcc将已经找到该文件,因为它会在同样包含
uno.c
的目录中搜索该文件

您可以编译多个FIL并将它们链接到一个二进制文件中,例如

gcc -o myApp myAppMain.c myAppUtil.c myAppStuff.c
但这意味着,如果单个源发生更改,您将不得不重新编译所有内容,因为中间对象没有保留。如果使用对象文件,则每个翻译单元始终有一个编译器调用


有一个功能可以预编译头文件,但是在这种情况下,您只需要编译头文件,而不是
uno.c
文件。在任何情况下,这都是非常高级的,所以您可能不需要它。

您真的希望它们作为一个.o,还是作为一个存档.a,或者只是将它们全部链接起来,以实现从多个.c文件构建的最终可执行文件?在进行一次编译/链接时不需要
-c
,仅在此处使用
-o
。此外,按照惯例,头(
.h
)包含在模块(
.c
)文件中。因此不会直接传递给编译器。无论如何,查看
makefile
的相关部分会有所帮助。我需要几个.o,在链接完它们之后。。。但我需要像MvG的回答一样的包括批准,这就是答案!:迪蒂