C 编程基础:为什么我用 gcc 编译 .c 文件后看不到 .o 文件

C programming basics: Why can't I see the .o file after I compile my .c file with gcc

我写了一个C程序并用.c扩展名保存了它。 然后我用 gcc 编译,但之后我只看到我的 .c 文件和一个 .exe 文件。程序运行完美。但是我理论上学的.o文件在哪里呢?它是否已被覆盖为 .exe 并由 gcc in on step 完成? (预处理、编译、汇编和链接)

我在 VM 运行 Debian 上。

以下是使用 gcc 进行编译以从 C 文件创建 .o 文件的步骤:

http://www.gnu.org/software/libtool/manual/html_node/Creating-object-files.html

分两步编译和link:

gcc -Wall -c tst.c
gcc tst.c -o tst

执行第一个命令后,您将获得一个 .o 文件。

如果你做了类似 gcc test.c 的操作,那么它只会生成可执行文件(为了只编译,请参阅 -c 选项)

默认情况下,gcc 一步编译和 links。要获得 .o 文件,您需要在不使用 linking 的情况下进行编译。这是通过 -c 选项完成的。

假设你想分别编译两个文件,然后link它们。您将执行以下操作:

gcc -c file1.c      # creates file1.o
gcc -c file2.c      # creates file2.o
gcc -o myexe file1.o file2.o

如果您只需要预处理器的输出,请使用 -E 选项和 -o 来指定输出文件:

gcc -E file1.c -o file1-pp.c    # creates file1-pp.c