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