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
我写了一个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