我编写了一个 C 程序并以 .c 扩展名保存。 然后我用 gcc 编译,但之后我只看到我的 .c 文件和 .exe 文件。程序运行完美。但是我理论上学到的.o文件在哪里呢?它是否已被覆盖为 .exe 并由 gcc 在步骤中完成? (预处理、编译、组装和链接)
我在运行 Debian 的虚拟机上。
默认情况下,
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
两步编译链接:
gcc -Wall -c tst.c
gcc tst.c -o tst
第一个命令后,您将获得一个
.o
文件。
如果您执行了类似
gcc test.c
的操作,那么它仅生成可执行文件(为了仅编译,请参阅 -c
选项)
以下是使用 gcc 编译以从 C 文件创建 .o 文件的步骤:
http://www.gnu.org/software/libtool/manual/html_node/Creating-object-files.html