5

我有这个问题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包含多个文件的文件?

4

1 回答 1

9

头文件(src/uno.h在这种情况下)是从文件中引用的,不应在命令行上再次命名:

gcc -c src/uno.c -o src/uno.o

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

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

gcc -o myApp myAppMain.c myAppUtil.c myAppStuff.c

但这意味着如果单个源发生更改,则必须重新编译所有内容,因为不会保留中间对象。如果您使用目标文件,每个翻译单元总是有一个编译器调用。

有一个预编译头文件的功能,但在这种情况下,您只会编译头文件,而不是uno.c文件。无论如何,这是相当先进的,所以你可能不需要它。

于 2012-11-07T12:03:55.443 回答