赞
踩
- #include<iostream>
-
- int main() {
- std::cout << "hello world" << std::endl;
- return 0;
- }
gcc -o
选项用来指定输出文件,如果不使用 -o
选项,那么将采用默认的输出文件。例如默认情况下,生成的可执行文件的名字默认为 a.out
。
g++
指令再添加一个 -C
选项,阻止 GCC
删除源文件和头文件中的注释:gcc -E -Cgcc -E 常见的选项
- #include<string>
- int main() {
- printf("hello world");
- return 0;
- }
-
-
- gcc -S main.cpp -o mainS.txt
-
- // 编译之后的代码
-
- .file "main.cpp"
- .section .rdata,"dr"
- __ZStL19piecewise_construct:
- .space 1
- .def ___main; .scl 2; .type 32; .endef
- LC0:
- .ascii "hello world\0"
- .text
- .globl _main
- .def _main; .scl 2; .type 32; .endef
- _main:
- LFB935:
- .cfi_startproc
- pushl %ebp
- .cfi_def_cfa_offset 8
- .cfi_offset 5, -8
- movl %esp, %ebp
- .cfi_def_cfa_register 5
- andl $-16, %esp
- subl $16, %esp
- call ___main
- movl $LC0, (%esp)
- call _printf
- movl $0, %eax
- leave
- .cfi_restore 5
- .cfi_def_cfa 4, 4
- ret
- .cfi_endproc
- LFE935:
- .ident "GCC: (MinGW.org GCC-6.3.0-1) 6.3.0"
- .def _printf; .scl 2; .type 32; .endef
-c
选项只是令 GCC
编译器将指定文件加工至汇编阶段,但不执行链接操作。这也就意味着:gcc -c
指令会对 main.cpp 文件执行预处理、编译以及汇编这 3 步操作.总的来说链接阶段要完成的工作,就是将同一项目中各源文件生成的目标文件以及程序中用到的库文件整合为一个可执行文件。
目标文件已经是二进制文件,与可执行文件的组织形式类似,只是有些函数和全局变量的地址还未找到,因此还无法执行。链接的作用就是找到这些目标地址,将所有的目标文件组织成一个可以执行的二进制文件。
完成链接操作,并不需要给 gcc 添加任何选项,只要将汇编阶段得到的 test.o 作为参数传递给它,g++就会在其基础上完成链接操作。例如:g++ MainDemo.o
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。