解释: 会生成 a.out 文件
解释: gcc main.c 生成 a.out , -o main 是将 a.out 改名为 main ,即 main 是最终生成的可执行文件.
可以理解为:
gcc main.c ( -o main )
gcc ( -o main ) main.c
即( -o + 要改的名)是一个整体,
-o 就是将 此行命令 生成的文件进行改名
解释: 对于步骤一中的 -c,英文的参考文档中解释道:Compile and assemble,but do not link.
翻译过来就是: 编译和汇编,但不要链接.
所以,gcc -c mian.c并没有生成可执行文件a.out(只有链接成功才会生成可执行文件), 而是生成了与 main.c同名的main.o文件 ;
对于步骤二, gcc main.o 就是 帮助 将步骤一生成的main.o文件,最终生成a.out可执行文件
解释:对于步骤一 : 拆开来看就是=> 先gcc -c main.c生成 main.o 文件 , 然后通过 -o A.o , 将main.o文件改名为A.o.
对于步骤二,gcc A.o =>将A.o文件链接生成a.out可执行文件
即, 将A.o文件先链接生成a.out可执行文件,再改名为 main , 也就是说 main 是最终生成的可执行文件.
也就是说:
只要加了 -c , 这行命令 就不能一步到位生成可执行文件 , 而是生成与目标文件(main.c)同名的main.o文件 ;
-o 就是给 " -o前面语句生成的文件 " 进行改名.