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

问题描述 投票:0回答:4

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

我在运行 Debian 的虚拟机上。

c gcc object-files
4个回答
2
投票

默认情况下,

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

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

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

1
投票

两步编译链接:

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

第一个命令后,您将获得一个

.o
文件。


1
投票

如果您执行了类似

gcc test.c
的操作,那么它仅生成可执行文件(为了仅编译,请参阅
-c
选项)


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.